Πριν από λίγο ήρθε η εισαγωγή μου σε αυτό που έγινε η αγαπημένη μου γλώσσα προγραμματισμού / δέσμης ενεργειών # 1: Python. Είναι δύσκολο για έναν προγραμματιστή γλώσσας να καταλήξει σε κάτι που είναι τόσο ισχυρό και εύκολο να γράψει, κάτι που ρέει φυσικά και σας επιτρέπει να εστιάσετε σε αυτό που είναι σημαντικό στον κώδικα σας. Η Python το κάνει όμορφα. Κάνει ακριβώς τα σωστά είδη υποθέσεων, επιτρέποντάς σας να επικεντρωθείτε περισσότερο σε αυτό που πρέπει να κάνει το πρόγραμμά σας αντί ακριβώς πώς πρέπει να γίνει. Δεν υπάρχει καμία ανησυχία σχετικά με τη διαχείριση μνήμης, τη μεταβλητή πληκτρολόγηση ή τα κατατεμαχισμένα ερωτηματικά, απλά κρατάτε το μυαλό σας στη λογική της αίτησής σας.

Η Python παίρνει κάποιες πολύ μεγάλες αναχωρήσεις από μερικές από τις πιο παραδοσιακές γλώσσες, όπως το C / C ++, που ταιριάζει καλύτερα με τις δυναμικές γλώσσες όπως το Ruby, το Smalltalk ή ακόμα και το Javascript. Η δυνατότητα γρήγορης και εύκολης λήξης σύνθετων εργασιών στη Python έχει αποτελέσει αντικείμενο μερικών μεγάλων κόμικων ιστού.

Σημείωση - Η Python είναι μια γλώσσα που ερμηνεύεται, ο διερμηνέας μπορεί να μεταφορτωθεί εδώ. Όλα τα παραδείγματα σε αυτόν τον οδηγό είναι γραμμένα για το Python 3.0 το οποίο ΔΕΝ είναι πλήρως συμβατό με προηγούμενες εκδόσεις. Αν αντιμετωπίζετε προβλήματα με την εκτέλεση των παραδειγμάτων, ελέγξτε την έκδοση Python.

Εκτελέστε τα παραδείγματα

Θα περιλάβω διάφορα παραδείγματα σε αυτόν τον οδηγό. Μόλις εγκαταστήσετε τον Python 3 διερμηνέα εγκατεστημένο (βεβαιωθείτε ότι είναι Python 3), ο κώδικας μπορεί να εκτελεστεί με δύο τρόπους:

Αρχείο δέσμης ενεργειών

Μπορείτε να αντιγράψετε / επικολλήσετε ολόκληρο το κείμενο του παραδείγματος κώδικα σε ένα αρχείο κειμένου. Τα αρχεία Python τυπικά τελειώνουν στο .py. Ανοίξτε τη γραμμή εντολών και εκτελέστε το εκτελέσιμο αρχείο Python ακολουθούμενο από το όνομα του αρχείου. Στη μηχανή μου Linux, τρέχω:

 python3.0 myfile.py 

Αυτό θα πρέπει να είναι περίπου το ίδιο και στα Windows και Mac, αν και ίσως χρειαστεί να ορίσετε την πλήρη διαδρομή προς τον διερμηνέα της Python, όπως

 C: \ Python30 \ python.exe myfile.py 

Διαδραστικός διερμηνέας

Η Python μπορεί επίσης να εκτελεστεί σε διαδραστική λειτουργία, όπου μπορείτε να πληκτρολογείτε εντολές μία κάθε φορά για να δείτε πώς αντιδρά. Αυτό μπορεί να είναι πολύ χρήσιμο για την αντιμετώπιση προβλημάτων ή για τη δοκιμή νέων στοιχείων. Εκτελέστε το εκτελέσιμο αρχείο Python από μόνο του, χωρίς κανένα αρχείο δέσμης ενεργειών, και θα ανοίξει τη διαλογική ερώτηση.

Το Ctrl-D θα τερματίσει τον διερμηνέα.

Λευκό χώρο

Μία από τις πιο ασυνήθιστες πτυχές της Python είναι η χρήση του λευκού χώρου για να υποδείξει μπλοκ κώδικα. Αντί να αρχίσει και να τελειώσει ή να ομαδοποιηθεί με αγκύλες, η Python χρησιμοποιεί το ποσό της εσοχής για να πει πώς να χειριστεί τα μπλοκ του κώδικα για το looping και τέτοια. Για πολλούς ανθρώπους που προέρχονται από άλλες γλώσσες προγραμματισμού, αυτό μοιάζει με παραφροσύνη. Μόλις εξοικειωθείτε με την ιδέα, ωστόσο, γίνεται φυσικό και αναγκάζει τον κώδικα σας να είναι σαφής και ευανάγνωστος. Όλοι βάζουμε κώδικα μπλοκ κώδικα ούτως ή άλλως (ή τουλάχιστον θα πρέπει), ώστε να έχει νόημα η γλώσσα να κατανοεί ότι όλες οι δηλώσεις που παρατάσσονται μαζί είναι μέρος του ίδιου μπλοκ.

Ως πρόσθετο πλεονέκτημα, η Python δεν είναι επιφυλακτική για το πόσο θέλετε να πατήσετε ή ακόμα και αν προτιμάτε καρτέλες ή κενά. Μπορείτε να χρησιμοποιήσετε μια καρτέλα, ένα κενό, δύο κενά, 137 διαστήματα, η Python δεν ενδιαφέρεται. Το μόνο που χρειάζεται να κάνετε είναι να είστε συνεπείς. Θα ελέγξει τον κωδικό σας και θα δούμε "Το πρώτο μπλοκ κώδικα είναι χαραγμένο με 4 κενά, οπότε θα υποθέσω ο ένας στον άλλο ένα τετράγωνο με άλλες 4 θέσεις" ή ό, τι συμβαίνει. Όσο είστε συνεπείς με τον τρόπο που εισάγετε τον κώδικα σας, η Python είναι αρκετά ευέλικτη ώστε να κατανοήσει. Το παρακάτω παράδειγμα μπορεί να σας βοηθήσει να ξεκαθαρίσετε τα πράγματα.

 1 2 3 4 5 
 x = 0 ενώ το x <10: print (x) x + = 1 print ("Όλα έτοιμα") 

Κατανομή κώδικα: Ο βρόχος ενώ λέει στην Python να εκτελέσει το ακόλουθο μπλοκ κώδικα εφόσον ισχύουν ορισμένες προϋποθέσεις. Σε αυτή την περίπτωση, η προϋπόθεση είναι ότι το x είναι μικρότερο από 10. Θα συνεχίσει να βγαίνει πάνω από το μπλοκ μέχρι το χ χτυπά 10. Το "x + = 1" μεταφράζεται σε "x = x + 1" ή "make x μεγαλύτερο κατά 1 ". Παρατηρήστε ότι η τελική γραμμή δεν τρέχει μέχρι να ολοκληρωθεί ο βρόχος while. Η Python βλέπει τις χαραγμένες γραμμές και τις αντιμετωπίζει ως την ομάδα του κώδικα που θα τρέξει σε κάθε ταξίδι μέσω του βρόχου while. Η τελική γραμμή δεν είναι χαραγμένη με τους άλλους, έτσι Python δεν ενεργεί επάνω σε αυτό μέχρι το βρόχο while τελειώσει.

Δυναμική πληκτρολόγηση

Η Python δεν απαιτεί να ορίσετε τι είδους δεδομένα θα είναι σε μια μεταβλητή. Μπορείτε να βάλετε έναν ακέραιο, μια συμβολοσειρά, ένα δεκαδικό, οτιδήποτε θέλετε σε μια μεταβλητή χωρίς να χρειάζεται να πείτε στο Python τι είναι. Η Python θα υπολογίσει, με βάση αυτό που εκχωρείτε, τον τύπο δεδομένων που θα πρέπει να διατηρεί η μεταβλητή. Το παρακάτω παράδειγμα θα πρέπει να αποδείξει:

 1 2 3 4 5 6 7 8 
 x = 0 εκτύπωση ("x είναι α:", τύπος (x)) x = 3.14 εκτύπωση ("x είναι a: x)) x = [1, 2, 3, 4] print ("x είναι α:", τύπος (x)) 

Αυτό μας δίνει την έξοδο παρακάτω

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Οι τρεις δομές δεδομένων που χρησιμοποιείτε πιο συχνά στο Python είναι

  • Τόπος αγώνων
  • Tuples
  • Λεξικά

Τόπος αγώνων

μοιάζουν πολύ με συστοιχίες σε ορισμένες άλλες γλώσσες. Είναι μια μονοδιάστατη ακολουθία αντικειμένων (αν και τεχνικά μπορείτε να τους δώσετε όσες διαστάσεις θέλετε). Κάθε στοιχείο σε αυτόν τον κατάλογο μπορεί να αλλάξει, να μετακινηθεί και να καταργηθεί κατά βούληση χωρίς να χρειάζεται να αναδημιουργήσει τη λίστα και χωρίς να προκαλέσει καμία αλλαγή στα άλλα στοιχεία. Οι λίστες μπορούν να περιέχουν οποιοδήποτε αντικείμενο της Python, είτε πρόκειται για έναν αριθμό, είτε για μια συμβολοσειρά, είτε για άλλες λίστες. Ο παρακάτω κώδικας δείχνει κάποια βασική χρήση των λιστών.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
 #create μια λίστα με μερικά δείγματα στοιχείων myList = [1, 2, 3, 4, 5] #len () δίνει μια μέτρηση για το πόσα στοιχεία διατηρεί η λίστα μας ("myList έχει, len (myList)" στοιχεία . ") # Τα στοιχεία μιας λίστας δεν πρέπει να είναι του ίδιου τύπου myList.append (" έξι ") myList.append (" επτά ") myList.append (8) # Έχουμε προσθέσει τρία νέα στοιχεία ("myList τώρα έχει", len (myList), "items") # # Τώρα ας δούμε τον αριθμό 0 (πρώτο στοιχείο) print ("πρώτο στοιχείο:" myList [ Το τέταρτο στοιχείο εκτύπωσης ("τέταρτο στοιχείο:", mylist [3]) #Το ποπ τελευταίο στοιχείο από τη λίστα εκτύπωσης ("και τελειώνει με", myList.pop ()) print ("myList now" myList), "items.") # Και δείτε τι έχω κάνει print ("Το πλήρες περιεχόμενο είναι:", myList) 

Tuples

Δεν θα καλύπτω πολλές πλειάδες, καθώς δεν θα το χρησιμοποιήσουν για παράδειγμα το πρόγραμμά μας και είναι παρόμοιοι με τους καταλόγους με πολλούς τρόπους. Τα Tuples, όπως οι λίστες, είναι μια σειρά αντικειμένων που ομαδοποιούνται. Η διαφορά είναι ότι οι πλειάδες δεν είναι μεταβλητές. Δεν μπορείτε να κάνετε επιτόπιες αλλαγές στα στοιχεία μιας πλειάδας, πρέπει να δημιουργήσετε εκ νέου την πλειάδα. Αυτό σημαίνει ότι δεν υπάρχει "προσάρτηση" ή "ποπ" ή άλλα πράγματα που κάνουν άμεσα αλλαγές στο περιεχόμενο της πλειάδας. Εάν βοηθάει, μπορείτε να σκεφτείτε τις πλειάδες ως λίστα μόνο για ανάγνωση (αν και αυτό δεν είναι πραγματικά ακριβές).

Λεξικά

Αυτά, μου αρέσει. Όταν ήμουν για πρώτη φορά διδάσκονται για λεξικά, θυμάμαι να σκέφτομαι κάτι σύμφωνα με τις γραμμές του "Λοιπόν .. ΠΙΣΤΕΥΩ ότι θα μπορούσε να είναι χρήσιμο ... μερικές φορές". Μέσα σε μια εβδομάδα, τους χρησιμοποίησα κάθε ευκαιρία που πήρα.

Στην Python, τα λεξικά είναι κλειδιά: τα ζεύγη αξίας. Είναι σαν μια λίστα εκτός από το ότι κάθε στοιχείο έχει δύο μέρη, ένα κλειδί και μια τιμή. Στο παρακάτω παράδειγμα, θα κάνω ένα λεξικό για να κρατήσω πληροφορίες για τον εαυτό μου.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
 myDict = {} # Αξία κλειδιού myDict ["Name"] = "Josh" myDict ["Occupation"] = "Computer Geek" myDict ["FavFood"] = "Anything but the B-52s" myDict ["Heroes"] = "Tom Waits, Kurt Vonnegut, SpaceBat" myDict ["FavNumber"] = 3.141592 myDict [42] "myDict [" Όνομα "]) εκτύπωση (" Οι ήρωές μου: ", myDict [" Heroes "]) print (" My favorite number: "myDict" FavNumber " ", myDict [42]) print () # Τώρα θα αλλάξω τον αγαπημένο μου αριθμό χωρίς να δημιουργήσω ένα # ολόκληρο νέο λεξικό myDict [" FavNumber "] + = 100 print (" ]) 

Μερικά παραδείγματα πρέπει να είναι ξεκάθαρα. Πρώτον, τα λεξικά μπορούν να αναμειγνύουν και να ταιριάζουν με τα δεδομένα οποιουδήποτε τύπου. Τα κλειδιά και οι αξίες σας μπορεί να είναι οτιδήποτε. Μπορείτε να γίνετε πραγματικά τρελοί και να θέσετε πράγματα όπως λειτουργίες μέσα στα λεξικά, αλλά αυτό είναι πέρα ​​από το πεδίο εφαρμογής αυτού του οδηγού.

Δεύτερον, τα λεξικά είναι μεταβλητά. Μπορείτε να προσθέσετε και να αφαιρέσετε αντικείμενα εν κινήσει χωρίς να δημιουργήσετε ξανά το λεξικό ή να επηρεάσετε άλλα αντικείμενα.

Εάν δεν είστε ακόμα σίγουροι για τη χρησιμότητα των λεξικών, σκεφτείτε να τα χρησιμοποιήσετε για να παρακολουθήσετε τις ρυθμίσεις ενός χρήστη. Θα μπορούσατε να έχετε ένα λεξικό που ονομάζεται ρυθμίσεις και να αποθηκεύσετε τα στοιχεία όπως όνομα χρήστη, διεύθυνση IP και ανάλυση οθόνης. Οποτεδήποτε θέλετε να αναφερθείτε στα δεδομένα αυτά, μπορείτε απλά να τα τραβήξετε από τις ρυθμίσεις ["username"] ή οποιοδήποτε άλλο κλειδί που έχετε ορίσει.

Φέρτε όλα σπίτι

Τώρα θα φτάσουμε στην πραγματική δράση, δημιουργώντας ένα χρήσιμο πρόγραμμα Python 3.0. Αυτό που κάνει αυτό το πρόγραμμα είναι να πάρει έναν αριθμό που αντιπροσωπεύει τα χρήματα, και να σας πω πόση αλλαγή τσέπης θα έκανε αυτό το ποσό. Είναι μια αρκετά κοινή άσκηση κωδικοποίησης και είναι ένας καλός τρόπος να αποδείξουμε τις έννοιες που έχουμε καλύψει μέχρι στιγμής.

Σας λέω τώρα ότι αυτό το πρόγραμμα ΔΕΝ πρόκειται να γραφτεί με τον καλύτερο τρόπο, ο στόχος μου είναι να το γράψω χρησιμοποιώντας τις πιο βασικές έννοιες και λειτουργίες που είναι δυνατόν. Υπάρχουν αρκετοί "καλύτεροι" τρόποι για να γράψετε αυτό, όπως λειτουργίες χρησιμοποιώντας και τον χειριστή μέτρησης και συμπεριλαμβανομένου του ελέγχου σφαλμάτων, αλλά αυτή η έκδοση θα πρέπει να είναι αρκετά εύκολη στην κατανόηση.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 
 #Αποκτήστε το συνολικό ποσό μετρητών = είσοδος ("Πληκτρολογήστε το ποσό μετρητών σε δολάρια: $") #Ανάγνωση από την εισαγωγή κειμένου παίρνει κείμενο, έτσι μετατρέψτε # σε δεκαδικό και πολλαπλά κατά 100 έτσι μπορούμε να μετρήσουμε τις πένες # (απλούστερα μαθηματικά με αυτόν τον τρόπο) float (σύνολο) * 100 # δημιουργία λεξικού για να διατηρήσετε τις τιμές αλλαγής change = {"quarters": 0, "dimes": 0, nickels: 0, "pennies": 0} #Loop ενώ οι πένες> 0: # Αφαιρέστε κάθε νόμισμα από το σύνολο, προσθέστε 1 για να μετρήσετε # για κάθε νόμισμα και επανεκκινήστε το βρόχο μετά την καταμέτρηση εάν οι πένες> = 25: αλλάξουν ["τέταρτα"] + = 1 πένες - = 25 συνέχεια elif πένες> = 10: αλλαγή ["dimes"] + = 1 πένες - = 10 συνέχεια elif πένες> = 5: αλλαγή ["nickels"] + = 1 πένες - πένες = 0 # Τέλος, εκτυπώστε τα αποτελέσματα της εκτύπωσης ("Q:", αλλάξτε ["τέταρτα"]) εκτύπωση ("D:", αλλαγή ["dimes"]) ) εκτύπωση ("P:", αλλαγή ["πένες"]) 

Κατανομή κώδικα: Χρησιμοποιούμε δεδομένα για να πάρουμε ένα χρηματικό ποσό από τη γραμμή εντολών. Η Python υποθέτει ότι αυτό που εισάγεται είναι μια σειρά κειμένου, σε αντίθεση με έναν αριθμό, οπότε πρέπει να την πούμε να μετατρέψει αυτή την είσοδο σε έναν χρησιμοποιήσιμο αριθμό. Θα μπορούσαμε να αφήσουμε τον αριθμό μόνο του (δηλαδή 15, 95) αλλά αντ 'αυτού θα το μετατρέψαμε σε πένες (πολλαπλασιασμός κατά 100) για να κάνουμε τα μαθηματικά απλούστερα, έτσι δεν θα χρειαζόταν να ανησυχούμε για τα δεκαδικά σημεία.

Στη συνέχεια, δημιουργούμε ένα λεξικό για τη διατήρηση των αποτελεσμάτων των υπολογιστών μας. Εάν αυτό ήταν ένα πιο περίπλοκο πρόγραμμα, θα μπορούσαμε να περάσουμε αυτό το λεξικό σε λειτουργίες, τάξεις κ.λπ. χωρίς να ανησυχούμε για την παρακολούθηση ξεχωριστών μεταβλητών για κάθε τύπο νομίσματος.

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

Μόλις τελειώσουμε με το βρόχο, το μόνο που έχει να κάνουμε είναι να παρουσιάσουμε τα αποτελέσματά μας.

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

Σε περίπτωση που κάποιος είναι τόσο περίεργος όσο ήμουν για να πω σωστά το "tuple", ήμουν αρκετά τυχερός που έχω την ευκαιρία να ρωτήσω τον Guido van Rossum τον εαυτό του αν ήταν "toople" ή "tupple", και έδωσε την κάπως μη ικανοποιητική απάντηση "Είναι ό, τι θέλετε."