Ποιος είναι εκεί;

Εισαγωγή και Μεταβλητές

Νομίζω πως ήρθε η ώρα για ένα πραγματικά πολύπλοκο πρόβλημα. Νά 'το!

print "Halt!"

s = raw_input("Who

goes there?")

print "You may pass, ", s

Όταν εγώ έτρεξα το πρόγραμμα, εμφανίστηκαν στην οθόνη μου τα παρακάτω:

Halt!

Who goes there? Josh

You may pass, Josh

Φυσικά όταν τρέξετε εσείς το πρόγραμμα το αποτέλεσμα στην οθόνη σας θα είναι διαφορετικό λόγω της δήλωσης στην raw_input. Όταν τρέξατε το πρόγραμμα (το τρέξατε, έτσι δεν είναι;), θα παρατηρήσατε ότι έπρεπε να πληκτρολογήσετε το όνομά σας και μετά να πατήσετε Enter. Ύστερα το πρόγραμμα εμφάνισε κάμποσο κείμενο ακόμα και μαζί και το όνομά σας. Αυτό είναι ένα παράδειγμα εισαγωγής. Το πρόγραμμα φτάνει σε ένα σημείο και από εκεί περιμένει τον χρήστη να εισάγει δεδομένα που θα χρησιμοποιήσει αργότερα.

Bέβαια, θα ήταν άχρηστα τα δεδομένα που θα πέρναμε από τον χρήστη αν δεν υπήρχε ένα μέρος να τα βάλουμε -σε αυτό το σημείο εμφανίζονται οι μεταβλητές. Στο παραπάνω πρόγραμμα το s είναι μια μεταβλητή. Οι μεταβλητές είναι σαν κουτάκια που μπορούμε να κρατήσουμε δεδομένα. Να ένα πρόγραμμα που δείχνει παραδείγματα με μεταβλητές:

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, Afte Midnight or Spam

Οι μεταβλητές κρατούν δεδομένα. Οι μεταβλητές του παραπάνω προγράμματος είναι a, b32, first_name, bκαι c. Οι βασικοί τύποι είναι κείμενο (string) και αριθμοί(numbers).

Το κείμενο είναι μια ακολουθία γραμμάτων, αριθμών και άλλων χαρακτήρων. Στο παράδειγμά μας τα b23 και first_name είναι μεταβλητές που κρατούν δεδομένα κειμένου. Τα Spam, Bill, a + b is και fisrt_name is είναι το κείμενο μέσα στο πρόγραμμα. Οι χαρακτήρες περικλείονται από " ή '. Ο άλλος τύπος μεταβλητών είναι οι αριθμοί.

Ωραία. Έχουμε λοιπόν αυτά τα "κουτάκια" που λέγονται μεταβλητές και δεδομένα που μπορούν να μπαίνουν στις μεταβλητές. Ο υπολογιστής θα διαβάσει την γραμμή first_name = "Bill" και θα καταλάβει ``Βάλε το κείμενο Bill μέσα στο κουτάκι (της μεταβλητής) first_name''. Ύστερα, όταν δει την πρόταση c = a + b θα καταλάβει ``Βάλε a + b ή 123.4 + 432 ή 555.4 στο c''. Να άλλο ένα παράδειγμα με χρήση μεταβλητών:

a = 1

print a

a = a + 1

print a

a = a * 2

print a

Όπως περιμένουμε η απάντηση:

1

2

4

Aκόμη και αν είναι η ίδια μεταβλητή και στις δύο μεριές μιας σχέσης ο υπολογιστής πάλι θα την διαβάσει σαν να του λέει: ``Πρώτα βρες τα δεδομένα που θα κρατήσεις και μετά το που θα πάνε''.

Άλλο ένα πρόγραμμα προτού αποτελειώσουμε το κεφάλαιο:

num = input("Type in a Number: ")
str = raw_input("Type in a String: ")
print "num =", num
print "num is a ",type(num)
print "num * 2 =",num*2
print "str =", str
print "str is a ",type(str)
print "str * 2 =",str*2

H απάντηση που εμφανίστηκε σε εμένα:

Type in a Number: 12.34
Type in a String: Hello
num = 12.34
num is a  <type 'float'>
num * 2 = 24.68
str = Hello
str is a  <type 'string'>
str * 2 = HelloHello

Προσέξτε ότι το num συντάσσεται με input ενώ το str με raw_input. Το

raw_input επιστρέφει ένα κείμενο ενώ το input επιστρέφει έναν αριθμό. Όταν θέλετε ο χρήστης να πληκτρολογήσει έναν αριθμό χρησιμοποιήστε input ενώ αν περιμένετε από αυτόν κείμενο, χρησιμοποιήστε raw_input.

Το δεύτερο μισό του προγράμματος χρησιμοποιεί την έκφραση type για να περιγράψει τον τύπο της μεταβλητής. Οι αριθμοί είναι του τύπου int ή float (που είναι συντμήσεις των integer -ακέραιος- και floating point -κινητής υποδιαστολής- αντίστοιχα). Το κείμενο είναι τύπου string. Οι ακέραιοι και οι αριθμοί κινητής υποδιαστολής μπορούν να χρησιμοποιηθούν σε μαθηματικές συναρτήσεις ενώ αντίθετα το κείμενο όχι. Θα παρατηρήσετε πως όταν η python πολλαπλασιάζει ένα κείμενο επί έναν ακέραιο το ευκταίο επιτυγχάνεται. Ωστόσο όταν ένα κείμενο πολλαπλασιάζεται επί έναν ακέραιο, τότε αυτό αποκτά τόσα αντίγραφα του εαυτού του. πχ: str * 2 = HelloHello .

Παραδείγματα

Rate_times.py

#This programs calculates rate and distance problems
print "Input a rate and a distance"
rate = input("Rate:")
distance = input("Distance:")
print "Time:",distance/rate

Τρέχοντας το πρόγραμμα με δοκιμαστικές τιμές:

> python rate_times.py
Input a rate and a distance
Rate:5
Distance:10
Time: 2
> python rate_times.py 
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

Τρέχοντας το πρόγραμμα με δοκιμαστικές τιμές:

> python area.py
Calculate information about a rectangle
Length:4
Width:3
Area 12
Perimeter 14
> python area.py
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("Farenheit temperature:")
print (temp-32.0)*5.0/9.0

Τρέχοντας το πρόγραμμα με δοκιμαστικές τιμές:

> python temperature.py
Farenheit temperature:32
0.0
> python temperature.py
Farenheit temperature:-40
-40.0
> python temperature.py
Farenheit temperature:212
100.0
> python temperature.py
Farenheit temperature:98.6
37.0

Ασκήσεις

Γράψτε ένα πρόγραμμα που παίρνει 2 μεταβλητές κειμένου και δύο αριθμών από τον χρήστη, τις ενώνει μαζί χωρίς κενά και εμφανίζει τα κείμενα και μετά πολλαπλασιάζει τους δύο αριθμούς σε μια νέα γραμμή.