מירי
כיתה ט · תכנות בפייתון

מחרוזות בפייתון כל אות במקום שלה

שם של שחקן, הודעה בצ'אט, סיסמה: כל טקסט בתוכנית הוא מחרוזת. כאן לומדים למדוד מחרוזת, לשלוף ממנה אות אחת או חתיכה שלמה, להחליף לאותיות גדולות ולחפש בתוכה. מחרוזת דומה מאוד לרשימה, ועוברים עליה עם לולאה בדיוק כמו שלמדתם.

1

הרעיון

מחרוזת היא שורה של תווים בתוך מירכאות, למשל "rocket". לכל תו יש מספר מקום, שנקרא אינדקס. הספירה מתחילה ב-0.

אורך ואות אחת

len(s) מחזיר כמה תווים יש. s[0] היא האות הראשונה, ו-s[-1] היא האחרונה.

s = "rocket"
print(len(s))   # 6
print(s[1])     # o
print(s[-1])    # t

חיתוך

s[a:b] לוקח את התווים מאינדקס a ועד לפני b. הסוף לא נכלל, ולכן האורך הוא b − a.

s = "rocket"
print(s[0:4])   # rock
print(s[2:])    # cket
print(s[:3])    # roc

שינוי וחיפוש

upper() ו-lower() מחזירות עותק באותיות גדולות או קטנות. in בודק אם יש חלק כזה, ו-find אומר באיזה אינדקס.

s = "rocket"
print(s.upper())     # ROCKET
print("ock" in s)    # True
print(s.find("k"))   # 3
print(s.find("z"))   # -1
לזכור: האינדקס הראשון הוא 0, והאחרון הוא len(s) - 1. בחיתוך s[a:b] האות במקום b לא נכנסת.
2

מעבדה: חותכים מחרוזת

הזיזו את המחוונים כדי לבחור מאיפה מתחילים ואיפה עוצרים. האותיות שנכנסות לחיתוך צבועות בצהוב, והמשבצת המקווקוות היא המקום שבו עוצרים (היא לא נכנסת). אחר כך הריצו את התוכנית שורה אחרי שורה: היא מדפיסה את החתיכה, את האורך שלה, וסופרת בה תנועות.

מעל: האות · מתחת: האינדקס, ובקטן האינדקס מהסוף

נסו את אלה:

הריצו בעצמכם

אפשר לשנות את הקוד ולהריץ פייתון אמיתי. בפעם הראשונה הטעינה לוקחת כמה שניות.

3

טעויות שכולם עושים

מתחילים לספור מ-1

האות הראשונה היא במקום 0. מי שכותב s[1] מקבל את האות השנייה.

✗ לא נכון

s = "rocket"
print(s[1])  # o

✓ נכון

s = "rocket"
print(s[0])  # r

חושבים שהסוף נכלל

רוצים 4 אותיות ראשונות? כותבים s[0:4], לא s[0:3]. הסוף עוצר לפני.

✗ לא נכון

print("rocket"[0:3])
# roc

✓ נכון

print("rocket"[0:4])
# rock

אינדקס שלא קיים

במחרוזת של 6 אותיות האינדקס האחרון הוא 5. s[6] עוצר את התוכנית עם שגיאה. השתמשו ב-s[-1].

✗ לא נכון

s = "rocket"
print(s[len(s)])
# IndexError

✓ נכון

s = "rocket"
print(s[len(s) - 1])
# t

שוכחים לשמור את התוצאה

upper() לא משנה את המחרוזת עצמה. היא מחזירה מחרוזת חדשה, וצריך לשמור אותה במשתנה.

✗ לא נכון

s = "go"
s.upper()
print(s)  # go

✓ נכון

s = "go"
s = s.upper()
print(s)  # GO
4

דוגמה פתורה, צעד אחרי צעד

תוכנית שבודקת שם משתמש למשחק: מודדת את האורך, שולפת את האות הראשונה, מכינה תג באותיות גדולות ובודקת אם יש בשם ספרה. לחצו "שורה הבאה" ועקבו אחרי המשתנים.

5

תרגול

6

שאלות שכולם שואלים

מה זה מחרוזת בפייתון?

מחרוזת היא טקסט בתוך מירכאות, כמו "hello" או "123". המחשב שומר אותה כשורה של תווים, ולכל תו יש אינדקס שמתחיל ב-0. אפשר למדוד אותה עם len, לשלוף ממנה אות או חתיכה, ולעבור עליה בלולאה. נסו במעבדה.

איך עובד חיתוך s[a:b] בפייתון?

החיתוך לוקח את התווים מאינדקס a ועד לפני אינדקס b. ב-"watermelon"[0:5] יוצא "water", כי לוקחים את המקומות 0 עד 4. אם משמיטים את a מתחילים מההתחלה, ואם משמיטים את b ממשיכים עד הסוף.

מה ההבדל בין find לבין in?

in עונה רק כן או לא (True או False). find מחזיר את האינדקס שבו החלק מתחיל, ו-‎-1 אם הוא לא נמצא. כשרק רוצים לדעת אם משהו קיים, in פשוט יותר. תרגלו למטה.