מחרוזות וטבלת ascii
אתם עכשיו בתרגול אינטרקטיבי לחצו על סמליל המסמך כדי לקרוא את התוכן של ההדרכה.
כדי לייצר מחרוזת נשתמש בגרשיים כפולות או בודדות (רק שיהיה אחיד), שימרו במשתנה name
את הערך "Taylor"
על מה נעבור
- מוטיבציה
- רענון - יצירת מחרוזת
- שרשור מחרוזות
- עיצוב מחרוזות (String Formatting)
- פונקציות מחרוזת מובנות
- טבלת ASCII
מוטיבציה
- מחרוזת היא אחד מהטיפוסים המרכזיים של שפת התכנות.
- המחרוזות מאוד שימושיות כאשר רוצים לאחסן בזיכרון או לנתח נתונים הקריאים לאדם כמו מילים ומשפטים.
- באמצעות המחרוזות התוכנה מתקשרת עם המשתמש ולכן יכולת הניתוח של מחרוזות היא חשובה.
תהליך ניתוח מחרוזת נקרא פירסור, ובאנגלית parsing.
רענון - יצירת מחרוזת
ברוב המוחלט של שפות התכנות ״עטיפה״ של טקסט (לווא דווקא המורכב רק מאותיות) בגרשיים, מסמנת לשפת התכנות להתייחס לטקסט זה כאל מחרוזת ולא כאל שם של משתנה או פקודה כלשהי בשפה.
1my_first_string = "hello world"2also_string = "Metallica"3also_string2 = "I love the number 7!"4also_string3 = "F"5also_string4 = "123" # please notice that the text "123" does not equal to the number 123!
בפייתון ניתן גם לסמן מחרוזת ע״י עטיפת הטקסט בגרש יחיד.
1 my_first_string = 'hello world'
לשיקול המתכנת באיזה סוג גרש (יחיד או כפול) ברצונו להשתמש, אך יש לשמור על אחידות בקוד.
שרשור מחרוזות
בדומה לפעולות החיבור והכפל במספרים, ניתן להשתמש גם באופרטורים אלה על מחרוזות.
כאשר אנחנו רוצים לשרשר מחרוזות נשתמש באופרטור החיבור (+).
1name = 'Henry'2age = '30'3intro_str = 'hello! my name is ' + name + " and i'm " + age + ' years old.' # final_str = 'hello! my name is Henry and i'm 30 years old.'
כאשר רוצים להשתמש בגרש יחיד לסימון מחרוזות אך הטקסט מכיל גרש יחיד כחלק ממילה, לדוגמה
i'm
, יש להקיף את הטקסט עם גרשיים כפולות
עיצוב מחרוזות (String Formatting)
בפייתון קיימת גישה ״נקייה״ יותר לגבי הדפסת מחרוזות בהם משולבות משתנים (כמו בדוגמה הקודמת) דרך זו קריאה יותר למתכנת ופחות מסורבלת משרשור.
כדי לעצב מחרוזת, לפני עטיפת הטקסט בגרשיים, יש להוסיף את האות f
. בכל פעם שנרצה לשלב משתנה לתוך המחרוזת, במקום המיועד נקיף אותו בסוגריים מסולסלות - {}
1name = 'Henry'2age = '30'3intro_str = f"hello! my name is {name} and i'm {age} years old."4print(intro_str)
בדוגמה זו, כאשר פייתון יבצע את פקודת ההדפסה למסך, המשתנה
name
יוחלף במחרוזתHenry
והמשתנהage
יוחלף במחרוזת30
פונקציות מחרוזת מובנות
כל מחרוזת היא אובייקט (עוד על כך בהמשך הקורס).
זה אומר שיש לה פונקציות מובנות (שיטות) שניתן להכיל אותן רק על מחרוזות.
פונקציות אלו עוזרות לנו לבצע מניפולציות על המחרוזת, בתהליך הנקרא פירסור (parsing), כדי להכין אותה לעיבוד נוסף.
על מנת להשתמש בשיטות אלה, נקרא להן ע״י הוספת ״נקודה״ - .
מיד לאחד סיום המחרוזת (או המשתנה שמייצג את המחרוזת)ואז נכתוב את שם השיטה ונוסיף סוגריים.
lower / upper
פונקציה זו הופכת את כל אותיות המחרוזת לאותיות גדולות או קטנות בהתאמה.
1str = 'HeLlO WoRlD'2str_lower = str.lower()3str_upper = str.upper()4print(str_lower)5print(str_upper)
תוצאת ההרצה:
1hello world2HELLO WORLD
islower / isupper
בשפות תכנות רבות נהוג שפונקציה אשר מתחילה במילה is
מחזירה ערך בוליאני, כלומר True
או False
ולכן פונקציות אלה מחזירה האם כלל האותיות במחרוזת אותיות גדולות או קטנות בהתאמה.
פונקציות אלה מתעלמות מתווים שאינם אותיות כמו סימנים מיוחדים (!, @ ,$,*) ומספרים.
1str = 'hello 123'2is_str_lower = str.islower()3is_str_upper = str.isupper()4print(is_str_lower)5print(is_str_upper)6print('---')7str2 = 'Henry'8is_str_lower2 = str2.islower()9is_str_upper2 = str2.isupper()10print(is_str_lower2)11print(is_str_upper2)12print('---')13str3 = 'WELCOME!'14is_str_lower3 = str3.islower()15is_str_upper3 = str3.isupper()16print(is_str_lower3)17print(is_str_upper3)
תוצאת ההרצה:
1True2False3---4False5False6---7False8True
בדיקת אורך מחרוזת - הפונקציה len
הפונקציה len
הינה פונקציה מובנית של שפת פייתון ולא רק של האובייקט מחרוזת וניתן להשתמש בה לעוד סוגי אובייקטים נוספים שנכיר בהמשך הקורס.
כדי לדעת מהו אורך הטקסט, נקרא לפונקציה len
וכפרמטר, בתוך סוגריים, נעביר לה את המחרוזת (או את המשתנה המייצג את המחרוזת)
הפונקציה מחזירה מספר שלם, המייצג את אורך המחרוזת.
1str = 'what is my length?'2str_size = len(str)3print(str_size)
תוצאת ההרצה:
118
המרה למחרוזת - הפונקציה str
בפייתון, ניתן להמיר כל טיפוס בסיסי (מספר שלם, מספר עשרוני ובוליאן) למחרוזת, כלומר לטקסט.
הפונקציה מחזירה את הערך ממוזר למחרוזת (טקסט)
1amount = 282integer_to_str = f'total is ' + str(amount)3amount += 3.54float_to_str = f'total is ' + str(amount)5bool_to_str = str(True)6print(integer_to_str)7print(float_to_str)8print(bool_to_str)
תוצאת ההרצה:
1total is 282total is 31.53True
כזכור, פייתון לא יודע לבצע פעולת חיבור בין שני טיפוסים שונים ולכן חישוב מתמטי מתבצע על טיפוסים המייצגים מספרים ואילו פעולות על מחרוזות מתבצעות רק על מחרוזות, ולכן יש צורך בהמרת המספר למחרוזת
ניתן להימנע מהמרת מספר למחרוזת ע״י שימוש בעיצוב מחרוזות (String Formatting). ע״י שימוש בעיצוב מחרוזות, פייתון ממיר את הערכים שבתוך הסוגריים המסולסלים לטיפוס מחרוזת בשבילנו!
1amount = 282integer_to_str = f'total is {amount}'3print(integer_to_str)
תוצאת ההרצה:
1total is 28
טבלת ASCII
כידוע, מחשב שומר נתונים בזיכרון כרצף של ספרות בינאריות (0 ו-1) בזיכרון.
כאשר אנחנו רוצים לשמור מחרוזת בזיכרון, המחשב מבצע המרה של כל תו במחרוזת למספר שבפועל מספר זה נשמר בזיכרון.
כאשר אנו נפנה לזיכרון המחשב ונקרא ממנו את הערך שנשמר תתבצע המרה חוזרת לתו ששווה לערך המספר.
טבלת ascii הינה טבלה שממפה בין תו למספר עשרוני שנשמר בזיכרון המחשב כמספר בינארי.
טבלת ascii הינה קבועה
טבלת ascii לדוגמא לחצו על התמונה להגדלה
כפי שניתן לראות, הערך של האותיות הגדולות והקטנות באנגלית שונה. כך למשל ערכה של תו a הינו 97 אך ערכו של התו A הינו 65
טבלת ASCII תקפה רק לאותיות לטיניות. לטובת השפה העברית למשל, המציאו פרוטוקול נוסף שלא נדבר עליו בקורס זה
עצם המרת מחרוזת לערך מספרי מאפשרת לנו לבצע פעולות מתמטיות על מספרים ולהמירם חזרה למחרוזת
המרה בין מחרוזת לASCII ולהיפך
כדי לקבל את הערך המספרי של תו כלשהו (לא חייב להיות אות), נשתמש בפונקציה המובנית בשפת פייתון ord
1a_to_ascii = ord('a')2B_to_ascii = ord('B')3symbol_to_ascii = ord('!')4print(a_to_ascii)5print(B_to_ascii)6print(symbol_to_ascii)
print result
197266333
כדי להמיר ASCII למחרוזת נשתמש בפונקציה המובנית chr
, מהמילה character
1ascii_to_a = chr(97)2ascii_to_B = chr(66)3ascii_to_symbol = chr(33)4print(ascii_to_a)5print(ascii_to_B)6print(ascii_to_symbol)
print result
1a2B3!
חישוב מרחק בין אותיות
נניח שברצוננו לבנות תוכנה אשר מבקשת מהתמש להזין אות באנגלית ואנו נרצה לבדוק מה מיקומה בסדר האלפבית
כדי לבצע מטלה זו, אנו ננצל את טבלת הASCII ואת העובדה כי כל האותיות באנגלית בטבלה ממקומות ברצף כך שההבדל בין הייצוג המספרי של כל אות הוא 1.
נכתוב תוכנה שתבצע את רצף הפעולות הבא:
- נקבל קלט ממשתמש.
- נוודא שאכן מדובר באות.
- כיוון שיש לנו גם אותיות גדולות וגם קטנות נמיר מראש כל אות לאות קטנה וכך נמנע מלתת מענה לכל אחד מהמקרים.
- נשתמש ב
ord
כדי לחשב את המיקום בטבלה. - נחסר את המיקום שקיבלנו מהמיקום של האות הראשונה בא״ב האות
a
. - נדפיס את התוצאה.
לחצו על run
ותראו את התוצאה.
לחצו כאן כדי לראות את הקוד
© 2022 DevIn. All rights reserved