در آموزش گذشته با نحوۀ ویرایش محتوای لیستها در زبان برنامهنویسی پایتون آشنا شدیم اما این در حالی است که به منظور انجام عملیات ویرایشی روی آیتمهای داخل یک لیست به نحوی بهتر و همچنین سریعتر، لازم است تا با نحوۀ جستوجو در محتوای آبجکتهایی از جنس لیست نیز آشنا شویم که در همین راستا در این آموزش نحوۀ جستجوی اعضای یک لیست را آموزش خواهیم داد که برای شروع، کد زیر را مد نظر قرار میدهیم:
colors = ["Red", "Green", "Orange", "Red", "Yellow", "Green", "Blue"]
colorSelect = ""
while colorSelect.upper()!= "QUIT":
colorSelect = input("Please type a color name: ")
if (colors.count(colorSelect) >= 1):
print("The color exists in the list!")
elif (colorSelect.upper() != "QUIT"):
print("The list doesn't contain the color.")
ابتدا یک آبجکت از نوع لیست با شناسۀ color
تعریف کرده و نام تعدادی رنگ را به صورت استرینگ در آن ذخیره کردهایم و در ادامه متغیری دیگر به نام colorSelect
با مقدار اولیۀ خالی ایجاد کردهایم که قرار است تا نام رنگ مد نظر کاربر را از ورودی گرفته و در آن نگهداری کنیم سپس برنامه وارد حلقۀ while
میشود که در آن گفتهایم تا زمانی که استرینگ ورودی توسط کاربر و منتسب به متغیر colorSelect
برابر با استرینگ «QUIT» نبود، عملیات دریافت ورودی از کاربر و انتساب آن به متغیر colorSelect
را ادامه دهد.
در ادامه، به عنوان شرط حلقۀ while
با فراخوانی فانکشن ()upper
روی متغیر colorSelect
گفتهایم انواع مختلف استرینگ ورودی از سمت کاربر را به حروف بزرگ تبدیل کرده و با استرینگ «QUIT» مقایسه کند که در صورت عدم مطابقت با یکدیگر، شرط حلقه برقرار بوده و دستور سطر چهارم مجدداً اجرا شده و منتظر دریافت نام رنگ ورودی از سمت کاربر بماند.
سپس دستور if
را تعریف کردهایم که در آن استرینگ منتسب به متغیر colorSelect
یا «نام رنگ» ورودیِ مد نظر کاربر را به عنوان آرگومان ورودی به فانکشن ()cout
دادهایم و آن را روی آبجکت colors
فراخوانی کردهایم. در واقع، خروجی فانکشن ()count
یک عدد صحیح است و بدین صورت عمل میکند که با دریافت آرگومان ورودی و فراخوانی آن روی آبجکت مد نظر، تعداد استرینگهای مربوط به آرگومان ورودیِ موجود در آبجکت مذکور را در خروجی ریترن میکند و همانطور که در کد فوق میبینید، در شرط if
گفتهایم استرینگ منتسب به colorSelect
از میان تمامی آیتمهای آبجکت colors
جستجو شود و چنانچه تعداد استرینگهای موجود برابر با 1 مورد یا بیش از آن بود، شرط برقرار بوده و استرینگ «!The color exists in the list» در خروجی چاپ شود.
در حقیقت، در این شرط اگر نام رنگ ورودی توسط کاربر حداقل یک بار در لیست آمده باشد، دستور if
اجرا میشود و پیغام «!The color exists in the list» در خروجی چاپ میشود و در غیر این صورت شرط elif
بررسی میشود که اگر کاربر به جای نام رنگ استرینگ «QUIT» را برای خروج از حلقه و پایان اجرای برنامه وارد نکرده باشد، دستور بدنۀ داخلی آن اجرا شده و استرینگ «.The list doesn't contain the color» در خروجی چاپ میشود اما در صورتی که کاربر استرینگ «QUIT» را وارد کند، شرط حلقۀ while
برقرار نبوده و برنامه از حلقۀ اجرا خارج میشود.
اسکریپت این برنامه را در فایلی به نام searchList.py
ذخیره کرده و اجرا میکنیم که چند نمونه خروجی به ازای ورودیهای مختلف آن را در ادامه آوردهایم:
Please type a color name: Orange
The color exists in the list!
Please type a color name: Green
The color exists in the list!
Please type a color name: Purple
The list doesn't contain the color.
Please type a color name: qUiT
با اجرای برنامه، ابتدا نام رنگ را معادل استرینگ «Orange» وارد کردهایم که این مقدار به متغیر colorSelect
منتسب میشود و در ادامه دستور while
اجرا میشود که فانکشن ()upper
در آن استرینگ منتسب به این متغیر را تماماً به حروف بزرگ تبدیل کرده و چک میکند که استرینگ حاصل برابر با استرینگ «QUIT» نباشد و همانطور که میدانیم، شرط برقرار بوده و بدنۀ داخلی آن تا زمانی که کاربر استرینگ «QUIT» را با هر ترکیب دلخواهی همچون «quit» و «Quit» یا «qUIT» و «quiT» وارد نکرده باشد اجرا میشود چرا که در هر صورت فانکشن ()upper
آنها را به حروف بزرگ تبدیل میکند.
در ادامه در شرط if
چک میکنیم که آیا استرینگ «Orange» بیش از یک بار (حداقل یک مرتبه) در میان آیتمهای منتسب به آبجکت colors
تکرار شده است یا خیر و مجدداً حلقه تکرار شده و منتظر دریافت ورودی از سمت کاربر میماند که این بار استرینگ «Purple» را به عنوان ورودی دادهایم که شرط if
به ازای آن برقرار نبوده و شرط elif
چک میشود بدین ترتیب که اگر استرینگ ورودی برابر با استرینگ «QUIT» نیست، استرینگ مربوط به موجود نبودن نام رنگ در خروجی چاپ شود و مجدداً نام رنگ دیگری از کاربر دریافت شود اما چنانچه استرینگ «QUIT» به عنوان ورودی دریافت شود، برنامه به طور کامل از حلقه خارج میشود.
در پایان لازم به یادآوری است که زبان برنامهنویسی پایتون فانکشن از پیش تعریفشدۀ دیگری تحت عنوان ()lower
دارا است که به منظور تبدیل تمامی حروف یک آبجکت از جنس استرینگ به حروف کوچک متناظرش مورد استفاده قرار میگیرد که برای نمونه کد زیر را به منظور بررسی نحوۀ عملکرد آن آوردهایم:
>>> var = "LowerCase"
>>> var.lower()
'lowercase'
در ابتدا متغیری به نام var
تعریف کرده و استرینگ «LowerCase» را به آن منتسب کردهایم و در ادامه فانکشن ()lower
را روی آبجکت var
فراخوانی کردهایم و همانطور که میبینید، تمامی حروف استرینگ مذکور به حروف کوچک تبدیل شده و در خروجی ریترن شدهاند.