پایتون برای همه | 30 | پیمایش در رشته | تغییرناپذیری رشته‌ها | حلقه‌زنی و شمارش

پایتون برای همه پایتون 3

اشتراک وفاداری (ماهی یک چایی)

می‌توانید از محتویات این باکس بگذرید و یک‌راست به سراغ نوشته اصلی بروید. قبل از خرید اشتراک وفاداری، مزایای آن را از طریق این پیوند مشاهده کنید. لطفا تنها بعد از خواندن «مزایای خرید اشتراک» اقدام به خرید کنید.

بسیاری از محاسبات، با استفاده از پردازش تک‌تک کاراکترهای موجود در یک رشته صورت می‌پذیرد. اغلب از ابتدا آغاز می‌شود، هر کاراکتر را به صورت جداگانه انتخاب می‌کند، کاری بر روی آن انجام می‌دهد و به سراغ کاراکتر بعدی تا انتهای رشته می‌رود. به این الگوی پردازشی، «پیمایش» می‌گویند. یکی از راه‌های نوشتن یک پیمایش استفاده از حلقه while است:

index = 0
while index < len(fruit):
    letter = fruit[index]
    print(letter)
    index = index + 1

این حلقه، پیمایشی را در رشته آغاز کرده و هر حرف را به صورت مستقل در یک خط به نمایش می‌گذارد. شرطِ حلقه index < len(fruit)‎ است، در نتیجه به محضی که index مساوی با طول رشته شد، شرط غلط از آب در آمده و بدنه‌ی حلقه اجرا نخواهد شد. آخرین کاراکتری که عملیات در این حلقه بر روی آن انجام می‌شود، با شاخص len(fruit)-1 خواهد بود که خب آخرین کاراکتر رشته نیز محسوب می‌شود.

تمرین ۱: یک حلقه while بنویسید که از آخرین کاراکتر موجود در یک رشته شروع کرده و بالعکسِ حلقه‌ی بالا، به سمت ابتدای حلقه حرکت کند و هر حرف را در یک خط جداگانه به مانند حلقه‌ی بالا چاپ می‌کند. با این تفاوت که چاپ کردنِ حروف از حرف آخر شروع شود و به اول برسد.

یک راه دیگر برای نوشتن یک پیمایش استفاده از حلقه for است:

for char in fruit:
    print(char)

هر باری که حلقه اجرا می‌شود، کاراکتر بعدی به متغیر char نسبت داده خواهد شد. این حلقه تا زمانی که کاراکتری باقی نمانده باشد، ادامه پیدا می‌کند.

قاچ‌هایی از رشته

یک بخش از یک رشته را «قاچ» یا «قطعه» می‌گوییم. انتخاب یک قطعه از رشته، مشابه با انتخاب یک کاراکتر است. به مثال زیر نگاه کنید:

>>> s = 'Monty Python'
>>> print(s[0:5])
Monty
>>> print(s[6:12])
Python

عملگر، قسمتی از رشته که از کاراکتر nام شروع شده و به کاراکتر mام می‌رسد را برمی‌گدارند. با این قاعده که حاصلْ شاملِ کاراکتر nام می‌شود، ولی شامل کاراکتر mام نخواهد شد.

اگر شما شاخص اول (قبل از دو نقطه) را از قلم بیندازید، قطعه از ابتدای رشته شروع خواهد شد. اگر شاخص دوم (بعد از دو نقطه) را از قلم بیندازید، قطعه تا پایان رشته خواهد بود:

>>> fruit = 'banana'
>>> fruit[:3]
'ban'
>>> fruit[3:]
'ana'

اگر اولین شاخص، بزرگتر و یا برابر با شاخص دوم بود، حاصلْ یک رشته‌ی خالی می‌شود که با دو علامت نقل قول مشخص خواهد شد:

>>> fruit = 'banana'
>>> fruit[3:3]
''

یک رشته‌ی خالی، شامل هیچ کاراکتری نشده و طول آن ‎0 خواهد بود، ولی در سایر موارد شبیه به یک رشته‌ی معمولی می‌باشد.

تمرین ۲: فرض کنید که fruit یک رشته است. fruit[:]‎ چه معنی‌ای را می‌دهد؟

رشته‌ها قابل تغییر نیستند

شاید وسوسه شده باشید که با استفاده از عملگر گمارش (=) یک کاراکتر در رشته را درآورده و تغییر دهید. مثلا:

>>> greeting = 'Hello, world!'
>>> greeting[0] = 'J'
TypeError: 'str' object does not support item assignment

آبجکت در این حالت یک رشته است و آیتم، کاراکتری‌ست که شما می‌خواهید آن را به رشته اختصاص دهید. در اینجا آبجکت مثل یک مقدار است؛ ولی در آینده معنای دقیق‌تری از آن را برای‌تان خواهیم گفت. یک آیتم، یکی از مقادیر موجود در یک زنجیر به حساب می‌آید.

دلیل خطای مثال بالا، این است که رشته‌ها تغییر ناپذیرند، به این معنی که شما یک رشته‌ی موجود را نمی‌توانید تغییر دهید. بهترین کاری که می‌توانید انجام دهید، ساخت یک رشته‌ی جدید با استفاده از رشته‌ی قبلی و جایگزینی کاراکتر با بهره‌گیری از شاخص‌هاست:

>>> greeting = 'Hello, world!'
>>> new_greeting = 'J' + greeting[1:]
>>> print(new_greeting)
Jello, world!

در این مثال ما حرف اول را با استفاده از قطعه کردن greeting و چسباندن یک کاراکتر به آن، تغییر دادیم. به یاد داشته باشید که رشته‌ی اصلی همان Hello, World سابق است.

حلقه‌زنی و شمارش

برنامه‌ی زیر، تعداد دفعالتی که حرف a در رشته ظاهر شده را حساب می‌کند:

word = 'banana'
count = 0
for letter in word:
    if letter == 'a':
        count = count + 1
print(count)

در این برنامه ما الگوی دیگری از محاسبه، به اسم «شمارش» را به شما نشان دادیم. متغیر count با 0‎ مقداردهی اولیه شده و سپس هر بار که a در رشته پدیدار شد، یک عدد به آن اضافه گردید. زمانی که برنامه از حلقه خارج می‌شود، count حاوی نتیجه‌ای از تعداد aهای موجود در رشته خواهد بود.

تمرین ۳: این کد را در تابعی به اسم count قرار دهید که دو آرگیومنت دریافت می‌کند. آرگیومنت‌ها یکی رشته و دیگری حرفی که قرار است تعدادِ تکرارش را تابع پیدا کند و برگرداند.

این نوشته تحت مجوز کرییتیو کامنز BY – NC و حمایت موسسه تحقیقاتی رامونا ارائه می‌شود. شما می‌توانید با توجه به مفاد این گواهی از آن استفاده کنید.

اولین نفری باشید که نظر می‌گذارد

پاسخ دهید

ایمیل شما نمایش داده نخواهد شد