En stund tilbake ble jeg introdusert til det som har blitt min # 1 favoritt programmering / skriptspråk: Python. Det er vanskelig for en språkutvikler å komme opp med noe som er både kraftig og lett å skrive, noe som flyter naturlig og lar deg fokusere på det som er viktig i koden din. Python gjør dette vakkert. Det gjør bare de riktige antagelsene, slik at du kan fokusere mer på hva programmet skal gjøre i stedet for nøyaktig hvordan det skal gjøres. Det er ingen bekymring for minnehåndtering, variabel skriving, eller de sprengte semikolonene, du husker bare logikken i søknaden din.

Python tar noen ganske store avganger fra noen av de mer tradisjonelle språkene som C / C ++, som passer bedre med de dynamiske språkene Ruby, Smalltalk, og til og med Javascript. Evnen til raskt og enkelt å fullføre komplekse oppgaver i Python har selv vært gjenstand for noen flotte webserier.

Merk - Python er et tolket språk, tolken kan lastes ned her. Alle eksemplene i denne håndboken er skrevet for Python 3.0, som ikke er helt bakoverkompatibel med tidligere versjoner. Hvis du har problemer med å kjøre eksemplene, kan du sjekke Python-versjonen.

Kjører eksemplene

Jeg vil inkludere ulike eksempler i denne veiledningen. Når du har installert Python 3-tolken (sørg for at den er Python 3), kan koden kjøres på to måter:

Skriptfil

Du kan kopiere / lime inn hele teksten til eksempelkoden i en tekstfil. Python-filer slutter vanligvis i .py. Åpne kommandoprompten din og kjør Python kjørbar etterfulgt av navnet på filen. På min Linux-maskin kjører jeg:

 python3.0 myfile.py 

Dette bør være omtrent det samme på Windows og Mac også, selv om du kanskje må spesifisere hele banen til Python tolken, for eksempel

 C: \ Python30 \ python.exe myfile.py 

Interaktiv tolk

Python kan også kjøres i interaktiv modus, der du kan skrive inn kommandoer en om gang for å se hvordan den reagerer. Dette kan være svært nyttig i feilsøking, eller i å prøve nye ting. Kjør Python kjørbar på egen hånd, uten skriptfil, og den vil åpne den interaktive spørringen.

Ctrl-D vil gå ut av tolken.

mellomrom

En av de mest uvanlige aspektene av Python er bruken av hvite rom for å indikere blokkeringer av kode. I stedet for å begynne og avslutte, eller gruppere etter parentes, bruker Python mengden innrykk for å fortelle hvordan man skal håndtere blokker med kode for looping og slikt. For mange som kommer fra andre programmeringsspråk, virker dette som galskap. Når du er vant til ideen, blir det imidlertid ganske naturlig og tvinger koden din til å være klar og lesbar. Vi alle strekker inn kodeblokker uansett (eller i det minste bør), så det bare gir mening for språket å forstå at uttalelser som alle er lagret sammen, er en del av samme blokk.

Som en ekstra fordel, er Python ikke kresen om hvor mye du liker å strekke inn, eller om du foretrekker faner eller mellomrom. Du kan bruke en fane, et mellomrom, to mellomrom, 137 mellomrom, ikke noe om Python. Alt du trenger å gjøre er å være konsekvent. Det vil sjekke koden din og se "Den første kodeblokken er innrykket av 4 mellomrom, så jeg antar hverandre blokk er innrykket av ytterligere 4 mellomrom" eller hva som helst. Så lenge du er konsekvent i måten du angir koden din, er Python fleksibel nok til å forstå. Følgende eksempel kan bidra til å rydde opp ting.

 1 2 3 4 5 
 x = 0 mens x <10: print (x) x + = 1 print ("All done") 

Kodeoppdeling: Mens sløyfen forteller Python å kjøre følgende kodeblokk så lenge visse forhold er sanne. I dette tilfellet er betingelsen at x er mindre enn 10. Det vil fortsette å gå over den blokken til x treffer 10. "x + = 1" oversetter til "x = x + 1" eller "gjør x større med 1 ". Legg merke til at den endelige linjen ikke kommer til å løpe til mens sløyfen er ferdig. Python ser de innrykkede linjene, og behandler dem som gruppekoden som skal kjøres på hver tur gjennom mensløkken. Den endelige linjen er ikke innrykket med de andre, så Python virker ikke på den til det er sløyfen ferdig.

Dynamisk skriving

Python krever ikke at du definerer hvilken type data som vil være i en variabel. Du kan sette et heltall, en streng, et desimal, alt du vil ha til en variabel uten å måtte fortelle Python hva det er. Python vil finne ut, basert på hva du tilordner, hvilken type data den variable skal holde. Følgende eksempel skal demonstrere:

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

Som gir oss utgangen nedenfor

Datastrukturer

De tre datastrukturene du bruker mest i python er

  • lister
  • tupler
  • ordbøker

lister

er mye som arrays på noen andre språk. De er en endimensjonal rekkefølge av elementer (selv om du teknisk sett kan gi dem så mange dimensjoner som du vil). Hvert element i denne listen kan endres, flyttes og fjernes uten vilje, uten å måtte gjenskape listen, og uten å forårsake noen endringer i de andre elementene. Lister kan inneholde et hvilket som helst Python-objekt, enten det er et nummer, en streng, og enda andre lister. Følgende kode viser noen grunnleggende bruk av 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 noen prøveeksempler myList = [1, 2, 3, 4, 5] #len () gir en telling av hvor mange elementer listen vår inneholder utskrift ("myList har", len (myList), "elementer . ") #Engene i en liste behøver ikke å være av samme type myList.append (" six ") myList.append (" seven ") myList.append (8) # Vi har lagt til tre nye elementer til slutten av listen skrives ut ("minList nå har", len (myList), "items.") #Nå la oss se varenummer 0 (første element) skriv ut ("første element:", myList [0]) #and nå Det fjerde elementet skrives ut ("fjerde element:", mylist [3]). Deretter pop det siste elementet ut av listen print ("og slutter med", myList.pop ()) print ("minList har nå", len myList), "items.") #And se hva vi har gjort utskrift ("Det komplette innholdet er:", myList) 

tupler

Jeg vil ikke dekke tuples mye, da de ikke vil bli brukt det vårt eksempelprogram og de ligner lister på mange måter. Tuples, som lister, er en serie med elementer gruppert sammen. Forskjellen er at tuples ikke er mutable. Du kan ikke gjøre på plass endringer i elementene i en tuple, du må gjenopprette tupelen. Dette betyr ikke "append" eller "pop" eller andre ting som direkte gjør endringer i innholdet i tuplen. Hvis det hjelper, kan du tenke på tuples som en skrivebeskyttet liste (selv om det egentlig ikke er veldig nøyaktig).

ordbøker

Disse, jeg elsker. Da jeg først ble lært om ordbøker, husker jeg å tenke noe i tråd med "Vel .. Jeg GUESS som kan være nyttig ... noen ganger". Innen en uke brukte jeg dem hver sjanse jeg fikk.

I Python er ordbøker nøkkel: verdipar. Det er ganske som en liste bortsett fra at hvert element har to deler, en nøkkel og en verdi. I det følgende eksemplet skal jeg lage en ordbok for å holde informasjon om meg selv.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
 myDict = {} # Nøkkelverdi myDict ["Name"] = "Josh" myDict ["Occupation"] = "Computer Geek" myDict ["FavFood"] = "Hani Special (ingen salat)" myDict ["FavBand"] = "Alt annet enn B-52s" myDict ["Heroes"] = "Tom Waits, Kurt Vonnegut, SpaceBat" myDict ["FavNumber"] = 3.141592 myDict [42] = "Det er også et godt nummer" "MyDict [" Name "]) print (" Mine helter: ", MyDict [" Heroes "]) print (" Min favoritt nummer: ", myDict [" FavNumber "]) print (" Hva synes jeg om 42? ", myDict [42]) print () # Nå skal jeg endre favorittnummeret mitt uten å opprette en # helt ny ordbok myDict [" FavNumber "] + = 100 utskrift (" My New Favorite Number: ", myDict [" FavNumber " ]) 

Noen få ting skal være tydelige fra eksemplet. For det første kan ordbøker blande og matche data av enhver type. Nøklene og verdiene kan være av noe. Du kan til og med bli veldig gal og sette ting som funksjoner i ordbøker, men det er langt utover omfanget av denne veiledningen.

For det andre er ordbøkene mutable. Du kan legge til og fjerne elementer på fly uten å gjenskape ordlisten eller påvirke andre elementer.

Hvis du fortsatt ikke er sikker på bruk av ordbøker, bør du vurdere å bruke dem til å spore en brukeres innstillinger. Du kan ha en ordbok som heter innstillinger og lagrer ting som brukernavn, ip-adresse og skjermoppløsning. Når som helst du trenger å referere til dataene, kan du bare trekke den fra innstillinger ["brukernavn"], eller hvilken annen nøkkel du har angitt.

Ta med alt hjemme

Nå skal vi komme til den virkelige handlingen, og skape et nyttig Python 3.0-program. Hva dette programmet vil gjøre er å ta et tall som representerer penger, og fortelle deg hvor mye lommeskift ville gjøre det beløpet. Det er en ganske vanlig kodende øvelse, og er en god måte å demonstrere konseptene vi har dekket så langt.

Jeg burde fortelle deg at dette programmet IKKE skal skrives på "beste" måten, mitt mål er å skrive det med de mest grunnleggende konseptene og operasjonene som er mulig. Det er flere "bedre" måter å skrive dette på, for eksempel ved hjelp av funksjoner og moduloperatøren, og inkludert feilkontroll, men denne versjonen skal være ganske lett å 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 
 #Gjennom kontanterbeløpet totalt = inngang ("Angi kontantbeløp i dollar: $") #Reading fra tekstinngang antar tekst, så konverter # til desimal og flere med 100 slik at vi kan telle pennies # (enklere matematikk på den måten) pennies = float (total) * 100 #bukser ordbok for å holde våre endringsverdier endring = {"kvartaler": 0, "dimes": 0, "nickels": 0, "pennies": 0} #Løp til alle pengene har blitt regnskapsført mens pennies> 0: #Skift hver mynt fra totalen, legg til 1 for å telle #for hver mynt, og start igjen etter å ha talt om pennies> = 25: change ["quarter"] + = 1 pennies - = 25 fortsett elif pennies> = 10: endre ["dimes"] + = 1 pennies - = 10 fortsett elif pennies> = 5: endre ["nickels"] + = 1 pennies - = 5 fortsett annet: endre ["pennies"] = int pennies = 0 #Finally, skriv ut resultatene våre utskrift ("Q:", endre ["kvartaler"]) skriv ut ("D:", endre ["dimes"]) print ("N:", endre ["nickels"] ) print ("P:", endre ["pennies"]) 

Kodefordeling: Vi bruker innspill for å få en mengde penger inn fra kommandolinjen. Python antar at det som skrives inn er en streng med tekst, i motsetning til et tall, så vi må fortelle det om å konvertere den innspillingen til et brukbart nummer. Vi kunne ha forlatt nummeret alene (dvs. 15.95), men i stedet konverterte vi det til pennies (multipliserer med 100) for å gjøre matte enklere, så vi ikke trenger å bekymre oss for desimaltall.

Deretter oppretter vi en ordbok for å holde resultatene av vår databehandling. Hvis dette var et mer komplekst program, kunne vi passere den ordboken rundt til våre funksjoner, klasser, etc. uten å bekymre seg for å holde oversikt over separate variabler for hver type mynt.

Etter det kommer det virkelige arbeidet - handlingen med å splitte våre pengetall i enkelte mønter. Dette programmet bruker en stundsløyfe for å fortsette å sykle til vi ikke har penger igjen fra vår originale innsats. Hver tur gjennom løkken ser på mengden penger, trekker den største mynten den kan, og starter om igjen sløyfen. I stedet for å gjøre subtraksjoner om og om igjen, ville dette programmet trolig være mye mer effektivt hvis vi hadde brukt moduloperatøren, men subtraksjonen er lettere å forstå.

Når vi er ferdige med løkken, er alt som er igjen å gjøre, vist våre resultater.

Python er i stand til langt mer enn jeg muligens kunne dekke her, men jeg håper jeg har kunnet demonstrere grunnleggende om hvordan det fungerer, og hvordan det kan brukes til å raskt og enkelt lage verktøy som ville være mye mer komplisert i en mindre intuitivt språk.

Hvis noen er så nysgjerrige som jeg snakket om hvordan jeg skulle ordne "tuple", var jeg heldig nok til å få muligheten til å spørre Guido van Rossum selv om det var "toople" eller "tupple", og han ga det noe utilfredsstillende svaret "Det er hva du vil."