Et øjeblik tilbage blev jeg introduceret til det, der er blevet min # 1 foretrukne programmering / scripting sprog: Python. Det er svært for en sprogudvikler at komme op på noget, der er både magtfuldt og let at skrive, noget der flyder naturligt og giver dig mulighed for at fokusere på, hvad der er vigtigt i din kode. Python gør dette smukt. Det gør bare de rigtige former for antagelser, så du kan fokusere mere på hvad dit program skal gøre i stedet for, hvordan det skal gøres. Der er ingen bekymring for hukommelsesstyring, variabel skrivning eller de blæste semikoloner. Du skal bare holde øje med logikken i din ansøgning.

Python tager nogle ret store afganger fra nogle af de mere traditionelle sprog som C / C ++, der passer bedre til de dynamiske sprog som Ruby, Smalltalk og endog Javascript. Evnen til hurtigt og nemt at afslutte komplekse opgaver i Python har endda været genstand for nogle store web-tegneserier.

Bemærk - Python er et fortolket sprog, tolken kan downloades her. Alle eksempler i denne vejledning er skrevet til Python 3.0, som IKKE er helt bagudkompatibel med tidligere versioner. Hvis du har problemer med at køre eksemplerne, skal du kontrollere din Python-version.

Kørsel af eksemplerne

Jeg vil medtage forskellige eksempler i hele denne vejledning. Når du har installeret Python 3-tolken (sørg for at det er Python 3), kan koden køres på to måder:

Script-fil

Du kan kopiere / indsætte hele teksten til eksemplet kode i en tekstfil. Python-filer slutter typisk i .py. Åbn din kommandoprompt og kør Python-kørslen efterfulgt af navnet på filen. På min Linux-maskine kører jeg:

 python3.0 myfile.py 

Dette bør være stort set ens på Windows og Mac, selvom du måske skal angive den fulde sti til Python-tolken, f.eks.

 C: \ Python30 \ python.exe myfile.py 

Interaktiv tolk

Python kan også køres i interaktiv tilstand, hvor du kan skrive kommandoer en ad gangen for at se, hvordan den reagerer. Dette kan være meget nyttigt ved fejlfinding eller ved at prøve nye ting. Kør Python eksekverbar på egen hånd, uden nogen script fil, og det vil åbne den interaktive prompt.

Ctrl-D forlader tolken.

Hvidt rum

Et af de mest usædvanlige aspekter af Python er dets brug af hvide rum for at angive blokke af kode. I stedet for at begynde og afslutte eller gruppere parentes bruger Python mængden af ​​indrykning til at fortælle, hvordan man håndterer blokke af kode til looping og sådan. For mange mennesker, der kommer fra andre programmeringssprog, virker dette som sindssyge. Når du vænner dig til ideen, bliver det dog helt naturligt og tvinger din kode til at være klar og læsbar. Vi alle indrykkende kodeblokke alligevel (eller i det mindste skal), så det giver bare mening for sproget at forstå, at udsagn alle sammenfletter er en del af samme blok.

Som en ekstra fordel er Python ikke kræsen om, hvor meget du vil indrykke, eller endda om du foretrækker faner eller mellemrum. Du kan bruge en fane, et mellemrum, to mellemrum, 137 mellemrum, Python er ligeglad. Alt du skal gøre er at være konsekvent. Det vil tjekke din kode og se "Den første kodeblok er indrykket af 4 mellemrum, så jeg antager hinanden blok er indrykket af yderligere 4 mellemrum" eller hvad som helst. Så længe du er konsekvent i den måde du indrykker din kode på, er Python fleksibel nok til at forstå. Følgende eksempel kan hjælpe med at rydde op.

 1 2 3 4 5 
 x = 0 mens x <10: print (x) x + = 1 print ("Alle færdige") 

Kodefordeling: Undergangsløbet fortæller Python at køre følgende blok kode, så længe visse betingelser er sande. I dette tilfælde er betingelsen, at x er mindre end 10. Det vil fortsætte med at sløjfe over den blok, indtil x rammer 10. "x + = 1" oversætter til "x = x + 1" eller "gør x større med 1 ". Bemærk, at den endelige linje ikke bliver kørt, indtil mens sløjfen er færdig. Python ser de indrykte linjer og behandler dem som den gruppe kode, der skal køres på hver tur gennem mellemløbet. Den endelige linie er ikke indrykket med de andre, så Python virker ikke på det, indtil lusen er færdig.

Dynamisk skrivning

Python kræver ikke, at du definerer, hvilken type data der vil være i en variabel. Du kan sætte et helt tal, en streng, en decimal, alt hvad du vil have i en variabel uden at skulle fortælle Python hvad det er. Python vil finde ud af, baseret på hvad du tildeler, hvilken type data den variable skal indeholde. Følgende eksempel skal demonstrere:

 1 2 3 4 5 6 7 8 
 x = 0 print ("x er a:", type (x)) x = 3, 14 print ("x er a:", type (x)) x = "Hej" x)) x = [1, 2, 3, 4] print ("x er a:", type (x)) 

Hvilket giver os nedenstående output

Datastrukturer

De tre datastrukturer, du oftest bruger i python er

  • Lister
  • tupler
  • Ordbøger

Lister

er meget som arrays på nogle andre sprog. De er en endimensionale rækkefølge af genstande (selvom du teknisk set kan give dem så mange dimensioner som du kan lide). Hvert element i denne liste kan ændres, flyttes og fjernes på vilkårlig vis uden at skulle genskabe listen og uden at forårsage nogen ændring af de andre elementer. Lister kan indeholde en hvilken som helst Python-genstand, uanset om det er et tal, en streng og endda andre lister. Følgende kode viser nogle grundlæggende brug af lister.

 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 en liste med et par prøveemner myList = [1, 2, 3, 4, 5] #len () giver et antal af, hvor mange elementer vores liste indeholder print ("myList har", len (myList), "poster . ") #Enhederne i en liste behøver ikke at være af samme type myList.append (" six ") myList.append (" seven ") myList.append (8) # Vi har tilføjet tre nye elementer til slutningen af ​​listen udskrives ("myList now has", len (myList), "items.") #Nu lader os se varenummer 0 (første vare) print ("first item:", myList [0]) #and nu det fjerde emne udskrives ("fjerde emne:", mylist [3]) .Dufter pop det sidste emne ud af listen print ("og slutter med", myList.pop ()) print ("myList now has" myList), "items.") # Og se, hvad vi har lavet print ("Det komplette indhold er:", myList) 

tupler

Jeg vil ikke dække tuples meget, da de ikke bliver brugt det vores eksempelprogram og de ligner lister på mange måder. Tuples, som lister, er en serie af elementer grupperet sammen. Forskellen er, at tupler ikke er mutable. Du kan ikke foretage ændringer på stedet i en tuple, du skal genskabe tuplen. Dette betyder ikke "tilføj" eller "pop" eller andre ting, som direkte ændrer indholdet af tuplen. Hvis det hjælper, kan du tænke på tuples som en skrivebeskyttet liste (selv om det ikke er rigtig præcist).

Ordbøger

Disse elsker jeg. Da jeg først blev undervist om ordbøger, husker jeg at tænke på noget i retning af "Nå .. Jeg GUESS, der kunne være nyttigt ... nogle gange". Inden for en uge brugte jeg dem hver chance jeg fik.

I Python er ordbøger nøgle: værdipar. Det er lidt som en liste bortset fra at hvert element har to dele, en nøgle og en værdi. I det følgende eksempel skal jeg lave en ordbog for at holde oplysninger om mig selv.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
 myDict = {} # Nøgleværdi myDict ["Name"] = "Josh" myDict ["Occupation"] = "Computer Geek" myDict ["FavFood"] = "Hani Special (ingen salat)" myDict ["FavBand"] = "Alt andet end B-52'erne" myDict ["Heroes"] = "Tom Waits, Kurt Vonnegut, SpaceBat" myDict ["FavNumber"] = 3.141592 myDict [42] = "Det er også et godt nummer" "myDict [" Name "]) print (" Mine helte: ", myDict [" Heroes "]) print (" Min favorit nummer: ", myDict [" FavNumber "]) print (" Hvad synes jeg om 42? ", myDict [42]) print () # Nu ændrer jeg mit yndlingsnummer uden at oprette en # helt ny ordbog myDict [" FavNumber "] + = 100 udskriv (" My New Favorite Number: ", myDict [" FavNumber " ]) 

Et par ting skal være tydelige fra eksemplet. For det første kan ordbøger blande og matche data af enhver type. Dine nøgler og værdier kan være noget. Du kan endda blive rigtig skør og sætte ting som funktioner inde i ordbøger, men det er langt ud over denne vejledning.

For det andet er ordbøgerne gensidige. Du kan tilføje og fjerne elementer på flugt uden at genskabe ordbogen eller påvirke andre elementer.

Hvis du stadig ikke er sikker på brugbarheden af ​​ordbøger, skal du overveje at bruge dem til at spore en brugers indstillinger. Du kunne have en ordbog kaldet indstillinger og gemme ting som brugernavn, ip-adresse og skærmopløsning. Når som helst du skal henvise til disse data, kan du bare trække den fra indstillinger ["brugernavn"] eller hvad som helst anden tast du har angivet.

Tag det hele hjem

Nu skal vi komme til den virkelige handling og skabe et nyttigt Python 3.0-program. Hvad dette program vil gøre er at tage et tal, der repræsenterer penge, og fortælle dig, hvor meget lommeskift ville gøre det beløb. Det er en temmelig almindelig kodende øvelse og er en god måde at demonstrere de begreber, vi har dækket hidtil.

Jeg skal fortælle dig nu, at dette program IKKE vil blive skrevet på "bedste" måde, mit mål er at skrive det ved hjælp af de mest grundlæggende begreber og operationer, der er mulige. Der er flere "bedre" måder at skrive dette på, f.eks. Ved hjælp af funktioner og moduloperatøren, herunder fejlkontrol, men denne version skal være ret let at forstå.

 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 
 #Få det samlede kontante beløb = input ("Indtast kontante beløb i dollar: $") #Læsning fra tekstindtastning antager tekst, så konverter # til decimal og multipel med 100, så vi kan tælle pennies # (enklere matematik på den måde) pennies = float (total) * 100 #create ordbog for at holde vores ændringsværdier ændre = {"kvartaler": 0, "dimes": 0, "nickels": 0, "pennies": 0} #Løb, indtil alle penge er blevet regnet mens pennies> 0: #Supler hver mønt fra summen, tilføj 1 for at tælle #for hver mønt, og genstart sløjfen efter at have talt om pennies> = 25: change ["quarter"] + = 1 pennies - = 25 fortsæt elif pennies> = 10: ændre ["dimes"] + = 1 pennies - = 10 fortsæt elif pennies> = 5: skift ["nickels"] + = 1 pennies - = 5 fortsæt andet: skift ["pennies"] = int pennies = 0 #Finalt print vores resultater print ("Q:", skift ["kvartaler"]) print ("D:", skift ["dimes"]) print ("N:", skift ["nickels"] ) print ("P:", skift ["pennies"]) 

Kodefordeling: Vi bruger input for at få en mængde penge i fra kommandolinjen. Python forudsætter, at det, der indtastes, er en tekststreng, i modsætning til et tal, så vi må fortælle det om at konvertere den pågældende input til et brugbart nummer. Vi kunne have forladt tallet alene (dvs. 15.95), men i stedet konverterede vi det til pennies (multipliceres med 100) for at gøre matematikken enklere, så vi ikke behøver at bekymre os om decimalpunkter.

Dernæst opretter vi en ordbog for at holde resultaterne af vores computer. Hvis dette var et mere komplekst program, kunne vi videregive denne ordbog til vores funktioner, klasser mv uden at bekymre os om at holde styr på separate variabler for hver type mønter.

Derefter kommer det virkelige arbejde - handlingen med at opdele vores pengesum i individuelle mønter. Dette program bruger en tidssløjfe for at fortsætte med at cykle, indtil vi ikke har penge tilbage fra vores oprindelige indgang. Hver tur gennem løkken ser på mængden af ​​penge, trækker den største mønt, den kan, og genstarter løkken. I stedet for at gøre subtraktioner igen og igen, ville dette program sandsynligvis være meget mere effektivt, hvis vi havde brugt moduloperatøren, men subtraktionen er lettere at forstå.

Når vi er færdige med sløjfen, er alt, hvad der er tilbage at gøre, vist vores resultater.

Python kan langt mere end jeg muligvis dækker her, men jeg håber jeg har kunnet demonstrere det grundlæggende i hvordan det virker, og hvordan det kan bruges til hurtigt og nemt at oprette værktøjer, der ville være meget mere komplicerede i en mindre intuitivt sprog.

Hvis nogen er så nysgerrig, som jeg handlede om, hvordan man korrekt udtalte "tuple", var jeg heldig nok til at få mulighed for at spørge Guido van Rossum selv om det var "toople" eller "tupple", og han gav det noget utilfredsstillende svar "Det er hvad du vil."