Εισαγωγή και Μεταβλητές
Νομίζω πως ήρθε η ώρα για ένα πραγματικά πολύπλοκο πρόβλημα. Νά 'το!
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 μεταβλητές κειμένου και δύο αριθμών από τον χρήστη, τις ενώνει μαζί χωρίς κενά και εμφανίζει τα κείμενα και μετά πολλαπλασιάζει τους δύο αριθμούς σε μια νέα γραμμή.