לימוד פייתון לאיש הפשוט/מי שם?
קלט ומשתנים
עריכההגיע הזמן לתוכנית ממש מסובכת נדפיס עצור! מי שם? נקבל שם כתשובה ונדפיס אפשר לעבור עם השם שקיבלנו:
print "Halt!"
user_input = raw_input("Who Goes there? ")
print "You may pass,", user_input
כשג'וש מריץ אותה הנה מה שמופיע על המסך שלו:
Halt! Who Goes there? Josh You may pass, Josh
כמובן כאשר הרצתם את תוכנית המסך אצלכם ניראה שונה בגלל הפקודה לבקשה לקלט ()raw_input
. כאשר הרצתם את התוכנית (הרצתם את התוכנית, נכון?) שמתם לב שהייתם חייבים
להקליד את שמכם ולאחר מכן ללחוץ על Enter. ואז התוכנית
הדפיסה קצת טקסט, ואת שמכם. זוהי דוגמה של קלט.
התוכנית מגיעה לנקודה מסוימת שבה היא ממתינה שהמשתמש יזין
כמה נתונים, והתוכנית יכולה להשתמש בהם מאוחר יותר.
כמובן, קבלת מידע מן המשתמש יהיה חסר תועלת אם לא היה מקום לשים את המידע הזה וכאן נכנסים המשתנים למערכת בתוכנית הקודמת user_input
הואמשתנה. משתנים הם כמו קופסה שיכולים לאחסן בה נתונים. הנה תוכנית שתציג דוגמאות של משתנים:
a = 123.4
b23 = 'Spam'
first_name = "Bill"
b = 432
c = a + b
print "a + b is",c
print "first_name is",first_name
print "Sorted Parts, After Midnight or",b23
והנה הפלט שלה:
a + b is 555.4 first_name is Bill Sorted Parts, After Midnight or Spam
משתנים שומרים מידע. המשתנים של התוכנית הנ"ל הינם a
, b23
, first_name
, b
, וכן c
.
ישנם שני סוגים משתנים בסיסיים מחרוזות ומספרים. מחרוזות הן רצף של אותיות, מספרים או תווים אחרים. בדוגמה זו b23
ו first_name
הם משתנים שמאחסנים מחרוזות. spam
, Bill
, a + b is
, וכן first_name is
הם מחרוזות בתוכנית זו. התווים מוקפים בגרשיים "
או בגרש '
. שאר סוגי משתנים הם מספרים. זיכרו כי משתנים משמשים לאחסון ערך, ואיתם לא משתמשים עם גרשיים ולא עם גרש. אם רוצים להשתמש בערך אמיתי, חייבים להשתמש ב גרשיים.
value1 == Pim
value2 == "Pim"
שניהם נראים אותו דבר, אבל בשורה הראשונה פייתון בודק אם הערך המאוחסן של המשתנה value1
זהה לערך המאוחסן במשתנה Pim
. בשורה השניה, פייתון בודק אם המחרוזת (בפועל האותיות i
, P
וכן m
) מאוחסנים ב value2
(בהמשך ההדרכה יהיה הסבר לגבי מחרוזות ולגבי הסימן ==
).
השׂמה
עריכהטוב אז יש לנו את הקופסאות האלה שנקראות משתנים ויש גם מידע שיכול להיות בהן. המחשב יראה את השורה "first_name = "Bill
ומבין זאת כ "שים את המחרוזת ביל Bill
לתוך התיבה (או המשתנה) שם פרטי first_name
". אחר כך בשורה c = a + b
הוא מבין כמו "שים את תוצאת הסכום של a + b
או 123.4 + 432
ששווה ל 555.4
בתוך המשתנה c
. הצד הימני של ההוראה ( a + b
) הוא החישוב והתוצאה מאוחסנת במשתנה בצד שמאל ( c
). פעולה זו נקראת השׂמה, שימו לב לא לבלבל את סימן ההשׂמה ( =
) עם סימן ה"שוויון" המתמטי (שמאוחר יותר נלמד שהוא הסימן הזה ==
).
הנה דוגמה נוספת של שימוש במשתנים:
a = 1
print a
a = a + 1
print a
a = a * 2
print a
וכמובן הפלט:
1 2 4
גם אם יש את אותו המשתנה בשני הצדדים המחשב עדיין קורא את זה בתור "תחילה תמצא את המידע שצריך לאחסן ולאחר מכן תברר להיכן המידע מאוחסן".
תוכנית אחרונה לפני סוף הנושא הזה:
number = input("Type in a number: ")
text = raw_input("Type in a string: ")
print "number =", number
print "number is a", type(number)
print "number * 2 =", number * 2
print "text =", text
print "text is a", type(text)
print "text * 2 =", text * 2
הפלט שהתקבל:
Type in a Number: 12.34 Type in a String: Hello number = 12.34 number is a <type 'float'> number * 2 = 24.68 text = Hello text is a <type 'str'> text * 2 = HelloHello
שימו לב כי עבור המשתנה number
הקלט התקבל על-ידי ()input
ואילו עבור המשתנה text
הקלט התקבל על-ידי ()raw_input
.
()raw_input
מחזירה מחרוזת ואילו ()input
מחזירה מספר. אם רוצים שהמשתמש יקליד מספר משתמשים ב ()input
, ואם רוצים שהמשתמש יקליד מחרוזת יש להשתמש ב ()raw_input
.
בחלק השני של התוכנית היא משתמשת בפקודה המציגה את הטיפוס של המשתנה ()type
. עבור מספרים ישנם שני סוגים של טיפוסים int
או float
, שהינם
קיצור למספר שלם integer ומספר עשרוני floating point, בהתאמה. מחרוזות טקסט הן סוג של Str
, קיצור של מחרוזת string. פונקציות מתמטיות יכולות לעבוד עם Integers ו floats, אבל לא עם מחרוזות. שימו לב כאשר פיתון מכפיל מספר במספר שלם אנו מקבלים את מה שאנו מצפים. עם זאת
כאשר מכפילים מחרוזת במספר שלם התוצאה תהיה מספר
עותקים של אותה המחרוזת (כלומר, text * 2 = HelloHello
).
דוגמאות
עריכההדוגמה הראשונה מחשבת את הזמן שיקח עבור מהירות ומרחק נתונים, יש להקליד את המהירות ואח"כ את המרחק:
Rate_times.py
# This program calculates rate and distance problems
print "Input a rate and a distance"
rate = input("Rate: ")
distance = input("Distance: ")
print "Time: ", (distance / rate)
הדוגמה תריץ:
Input a rate and a distance Rate: 5 Distance: 10 Time: 2
Input a rate and a distance Rate: 3.52 Distance: 45.6 Time: 12.9545454545
הדוגמה הבאה מחשבת את ההקף והשטח של מלבן נתון, יש להקליד קודם את אורך המלבן ואח"כ את רוחבו:
Area.py
# This program calculates the perimeter and area of a rectangle
print "Calculate information about a rectangle"
length = input("Length: ")
width = input("Width: ")
print "Area", length * width
print "Perimeter", 2 * length + 2 * width
הדוגמה תריץ:
Calculate information about a rectangle Length: 4 Width: 3 Area 12 Perimeter 14
Calculate information about a rectangle Length: 2.53 Width: 5.2 Area 13.156 Perimeter 15.46
הדוגמה הבאה ממירה את הטמפרטורה מפרנהייט לצלזיוס, יש להקליד את הטמפ' בפרנהייט:
temperature.py
# Converts Fahrenheit to Celsius
temp = input("Fahrenheit temperature: ")
print (temp - 32.0) * 5.0 / 9.0
הדוגמא תריץ:
Fahrenheit temperature: 32 0.0
Fahrenheit temperature: -40 -40.0
Fahrenheit temperature: 212 100.0
Fahrenheit temperature: 98.6 37.0
תרגילים
עריכהכתבו תוכנית אשר מקבלת 2 מחרוזת ו 2 משתנים מסוג שלמים מן המשתמש, משרשרת אותם ללא רווחים ומציגה את המחרוזת, ולאחר מכן מכפילה את שני המספרים בשורה חדשה.
הקודם: שלום, עולם הנוכחי: מי שם? הבא: לספור עד 10