לימוד פייתון לאיש הפשוט/מי שם?

קלט ומשתנים

עריכה

הגיע הזמן לתוכנית ממש מסובכת נדפיס עצור! מי שם? נקבל שם כתשובה ונדפיס אפשר לעבור עם השם שקיבלנו:

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