1 / 31

Programmering med Python i MENA1000 Introduksjon og litt til…

Programmering med Python i MENA1000 Introduksjon og litt til…. Truls Norby. Truls Norby Kjemisk institutt/ Senter for Materialvitenskap og nanoteknologi (SMN) Universitetet i Oslo FERMIO Forskningsparken Gaustadalleen 21 N-0349 Oslo truls.norby@kjemi.uio.no.

noreen
Download Presentation

Programmering med Python i MENA1000 Introduksjon og litt til…

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmering med Python i MENA1000Introduksjon og litt til… Truls Norby Truls Norby Kjemisk institutt/ Senter for Materialvitenskap og nanoteknologi (SMN) Universitetet i Oslo FERMIO Forskningsparken Gaustadalleen 21 N-0349 Oslo truls.norby@kjemi.uio.no Programmering er nyttig, nødvendig og givende Direkte moro!?

  2. Programmering med Python i MENA1000 er en mikrominiversjon av INF1100 • En første introduksjon til å programmere datamaskiner • Programmering er svært viktig i bl.a. industri og forskning • Programmering er i seg selv en akademisk utfordring og gjenstand for forskning og utvikling og kommersialisering • Programmering vil bli brukt i mange senere emner • INF1100 er koordinert med MAT1100 og MAT-INF1100: • i MAT1100 lærer du matematikk (kalkulus) • i MAT-INF1100 lærer du en ”datamaskinvennlig” versjon av matematikken • i INF1100 lærer du å skrive programmer for å regne med denne datamaskinvennlige versjonen av matematikk • Du vil se matematikk og anvendelser fra ulike perspektiver i disse tre emnene • Hvis du som MENA-student ikke får tatt INF1100 må du lære programmering bl.a. ved hjelp av tilbudet i MENA1000, samt egeninnsats. • Hvis du ikke er MENA-student, er programmering kanskje ikke så viktig…

  3. Undervisning i programmering i MENA1000 • Kollokvier (”øvelser”) i kurs-uke 1 • Introduksjon • Lære å logge inn og skrive, redigere, lagre og utføre et Python-program • Programmeringstemaer i forelesningstimer i uke 1 • Spesialhjelp i løpet av enkelte kollokvier • Programmeringsoppgave i hver laboppgave-innlevering • Egeninnsats • Bruk INF1100 (web, materiell, undervisningstilbud) • Programmér aktivt • Liten oppgave i programmering på del- og slutteksamen.

  4. Om å lære programmering (fra INF1100): • Du må lære programmering gjennom å programmere selv • Programmering er krevende i begynnelsen – så blir det gøy! • Oppskrift på suksess: vær godt forberedt til undervisningen (jfr. følg forrige foil) – det gir deg mest fritid og mest læring • Forventet arbeid i INF1100: 6 t undervisning + 7 t selvstudium = 13/uke • Eksemplene i INF1100 handler om bruk av matematikk og bygger på maksimal matematikk-fordypning fra vgs • Vi antar vi at du tar MAT1100 og MAT-INF1100 i parallell (eller at du har tatt tilsvarende kurs) • Det er fordel med noe fysikk fra vgs for å forstå fysikk-eksemplene • INF1100 vil belyse matematikk fra en ny vinkel og hjelpe deg til å forstå matematikk bedre samtidig som du lærer å programmere • Vi bruker matematikken hovedsakelig som verktøy til å løse problemer i fag som fysikk, biologi, finans, ...

  5. Mer om Python(fra et INF1100 lysark) • The INF1100 book containsonly fragments ofthePythonlanguage (intended for real beginners!) • The slides in theeducationareevenbriefer • Thereforeyouwillneed to look up more Pythoninformation • Primaryreference • The officialPythondocumentation at docs.python.org • Veryuseful: The PythonLibraryReference, especiallytheindex • Example: whatcan I find in themathmodule? Go to thePythonLibraryReferenceindex, find ”math”, clickonthe link and youget to a descriptionofthemodule • Alternative: pydocmath in the terminal window (briefer) • Note: for a newbie it is difficult to read manuals (intended for experts) – youwillneed a lot oftraining; just browse, don’treadeverything, try to digoutthekey info

  6. Kom i gang med å programmere i Python • Python er en programpakke som tolker og utfører Python-programmer som du skriver. • Som del av pakken har vi programmene emacs og/eller idle – programmer som hjelper deg med å skrive og holde orden på programmene dine. De gjør også jobben med å påkalle selve Python-programmet når du ber om få sjekket, tolket og utført programmet ditt. • Python-pakken må være tilgjengelig på din datamaskin lokalt eller via nettverk • Python-pakken skal kunne kjøres fra alle UiO sine datamaskiner. • Sett deg ved en ledig datamaskin (terminal) og logg inn med ditt vanlige brukernavn og passord.

  7. Hvis maskinen har linux operativsystem • Hvis datamaskinen er en Linux-maskin, høyreklikk og opprett et nytt vindu. • I dette vinduet skriver du emacs testprogram1.py (og Enter). • Systemet finner da emacs-programmet og utfører dette. Det oppretter i sin tur python-programmet ditt, som vi nå har kalt testprogram1.py. Det at du har .py i navnet forteller emacs at det er et python-program, slik at emacs oppfører seg deretter. • Gå frem til lysark ”Skriv et kort program”

  8. Hvis maskinen har Windows operativsystem • Hvis maskinen er en Windowsmaskin, klikk Start, Programmer og se etter Python. • Hvis maskinen har Python, finn og klikk på idle eller emacs. • Hvis maskinen ikke har Python: • Klikk Start, Programmer, Tilbehør, Tilkobling til eksternt skrivebord (Engelsk: Start, Programs, Accessories, RemoteDesktopApplication) • Det kommer opp et vindu der du skriver windows.ifi.uio.no • Du kobles da til en Windows-server på ifi (Institutt for informatikk). • Logg deg på i de neste vinduene med ditt vanlige brukernavn og passord. • Nå vil du finne Python med Idle: Klikk Start, Programmer, Python, Idle • Uansett om du kjører på maskinens Windows eller ifi’semacs eller idle: • Det vinduet som kommer opp i først er et ”Skall” – et vindu der programmet kommuniserer med deg. • Klikk på Fil og åpne et nytt vindu. Dette er vinduet der selve programmet skrives. • I det nye vinduet Klikk på Fil og lagre som ”testprogram1.py’

  9. Skriv et kort program • Uansett om du er på linux eller Windows kan du nå skrive linjer med kode. Hver linje avsluttes med Enter-tasten • Skriv for eksempel disse to programlinjene, helt eksakt: # Kommentar: Dette er et testprogram. print ”Hei på deg! Denne testen gikk fint! Du er jammen flink!” • Test programmet: I rullemenyene, finn og klikk Run. • Hvis alt er korrekt får du en utskrift på skjermen: ”Hei på deg…” • Hvis du har tastet feil, kan det hende at du får en feilmelding. Korriger og prøv Run igjen. • Utforsk menyene: Lagre filen. Lagre filen med nytt navn. Åpne en lagret fil. Rediger programmet. Lagre igjen. Utfør programmet igjen. • Når du er ferdig, lukk og logg ut. • Nå kan du begynne å lære deg programmering ved å prøve selv etter hvert som du lærer nytt stoff ved eksempler.

  10. Høydentil en ball somkastesrettopp Vi vilregneut y(t) = v0 t − ½ g t2 for v0 = 5, g = 9,81 og t = 0,6: y = 5・0.6 − ½・9,81・ 0,62 Python-program for beregningen: print 5*0.6 - 0.5*9.81*0.6**2 Skrivprogrammet, lagredetsomball_numbers.pyogkjørdet. Detskalskrive 1.2342 somresultat.

  11. Samme program, men med bruk av variabler Skrivprogrammet v0 = 5 g = 9.81 t = 0.6 y = v0*t - 0.5*g*t**2 print y Detbrukervariablene v0, g, t ogy

  12. Om å bruke æ, ø og å • Hvisdubruker æ, ø ogåvil Python komme med en advarselnårdukjørerprogrammet. • Detforeslåråsette inn en kodeiførstelinje, for eksempel # -*- coding: utf8-*- eller # -*- coding: latin-1 -*- Vedåtrykke “Edit My File” knappensomkommeropp, skriveskodenrett inn for deg. Vedåtrykke OK lagresfilenpå en måtesomgodtardissebokstavene. Python leserogbruker med andreordenkelte “kommentarlinjer”, som den ovenfor. Etterdettevil Python godta æ, ø ogåiprogrammet. Men bare ikommentarerogutskrift – aldriivariabelnavn.

  13. Casting • Casting: Konvertering mellom variabel-typer Generelt: Ny_variabel = Ny_type(Gammel_variabel) Eksempler: Tekst = ‘123.4’ Flyttall = float(Tekst) Flyttall = float(Heltall) Heltall = int(Flyttall) Heltall = int(Tekst) Tekst = str(Flyttall) Tekst = str(Heltall) Den samme variabelen kan skifte type. Eksempel: Input = ‘123.4’ #Input er nå en string Input = float(Input) #Input er nå blitt en flyttallsvariabel

  14. If- og if-else-forgreininger • Med If-forgreininger kan vi velge forskjellige løp i programmet • Eksempel med ballens høyde: Vi skriver bare ut verdien HVIS høyden er > 0, dvs. over bakken. if y >= 0: print ‘høyden er ‘,y Vi kan også bruke if else: if y >= 0: print ‘høyden er ‘,y else: print ‘Landet!’

  15. Heltall - flyttall • Operasjonermellomheltallresultereriheltall: 3 / 2 = 1 • Derforbør vi oftegjøreomheltallsvariabletilflyttallførslikeoperasjoner. • For konstanterkan vi brukekomma: 3.0 / 2 = 1.5

  16. If-elif-else-forgreininger • Hvis vi har flere valg enn to kan vi bruke elif (else-if): if y > 0: print ‘høyden er ‘,y elif y==0: print ‘dunk!‘ else: print ‘Har landet!’

  17. while-løkker • brukes når vi vil bruke samme program-del (gjøre samme operasjon) flere ganger, inntil et kriterium er nådd. • Anta at vi vil finne tiden det tar før høyden til ballen er null: v0 = 5 g = 9.81 t = 0.0 while v0*t - 0.5*g*t**2 >= 0: t = t + 0.1 # kan også skrives t += 0.1 print “Ballen er i lufta i ”, t, “sekunder.” Merk: Bare de linjene som er indentert etter løkka er i løkka og repeteres. Hvis du glemmer å øke t i løkka, vil løkka gå uendelig – programmet synes å ha gått i stå, men det løper egentlig i bakgrunnen. For å stoppe et løpsk program, trykk Ctrl-D.

  18. Mer avansert: while løkke og lister • Vi villagreforløpettilballkastet; allehøydeneogtidene: v0 = 5 g = 9.81 t = 0.0 tider = [t] #Vi starter med en liste med bare startverdien hoyder = [0] i = 0 # en tellevariabel for antall ganger vi hargåttigjennomløkka # Den teller ogsåindeksenpålistene while hoyder [i] >= 0: i += 1 # Vi økertelle-variablen tider.append(i*0.1) t = tider[i] hoyder.append(v0*t -0.5*g*t**2) print tider print hoyder

  19. Vi bruker en while-løkke til å lage en pen utskrift av listene j = 0 n = len(tider) # Funksjonenlen(x) girlengdenpå listen print "|%10s|%10s|" % ("Tid", "Høyde") print "-------------------------------------" while j < n: print "|%10f|%10f|" % (tider[j], hoyder[j]) j += 1 print "-------------------------------------"

  20. for-løkke • Sammeutskrift med en for-løkke: n = len(tider) print "|%10s |%10s|" % ("Tid", "Høyde") print "-------------------------------------" for j in range(n): print "|%10f |%10f|" % (tider[j], hoyder[j]) print "-------------------------------------“ Legg merketil at for-løkkeni Python ikkeersomi de flesteandrespråk (for j = 1 to n…) men istedet for j in range(n)…

  21. Funksjoner • Funksjoneri python liknerpåfunksjonerimatematikken. • Funksjonererdefinisjonerpåhvasomskalgjøres (funksjonsblokken) med noenparametre vi sender inn oghvasomskalkommeut. Som en bokssomproduserernoefranoe (annet). • En funksjonbegynner med def, såfunksjonsnavn, en parentes med navnpåparametervariableneog et kolon. Såkommerselvefunksjonsblokken. • Funksjonenkjøres bare når den kalles • Vi mådefinerefunksjonenfør vi kankjøre den. (Den måståhøyereoppiprogrammet.)

  22. Funksjoner • Funksjonenreturnerer en verdivedkommandoenreturn • Funksjonerkanogsåutføresutenåreturnerenoe. • Funksjonerbruker for åunngåågjentakodesombrukesflere ganger; girryddigere program. • Hold funksjonenekorte; del evt. oppiflere.

  23. Funksjoner – import fra pakker • Ikkeallemåfinneoppkruttetpånytt • Ofteer de ferdiglagdefunksjoneneraskereenndet vi kanskriveselv. (python er et tregtspråk, pakkererskrevetic,c++ eller FORTRAN) • Hvordanimportere alt • Hvordanimporterenoe • Detfinnesveldig mange funksjoner. Her skal vi læreom/ bruke: • Standard python • math, random, sys, time • Tileggspakker: • numpy, scitools • Finneutmer: pythons hjemmeside, google. Lurerdupåhvordan, harnoenandresannsynligvisgjortdetfør.

  24. Funksjon: Eksempel # Eksempel: Fakultet (!): def nfakultet(n): fakultet = 1 for i in range(1,n+1): fakultet = fakultet * i # fakultet *= i return fakultet print nfakultet(4), nfakultet(10), nfakultet(20) • NB: Indenteringen må være riktig!!

  25. Import av pakke • For eksempel: Hvis vi trenger en matematisk funksjon er det sannsynlig at den ligger i pakken Math. • HVilke funksjoner som finnes hvor, hva de heter, og hvordan de brukes finnes i Python-dokumentasjon i manualer, sammen med Python, og på web. • Importere hele Math: import math print math.cos(math.pi)

  26. Importere deler av en pakke • Eksempel: Vi importerer bare funksjonene cos og pi from math cos, pi print cos(pi) • Legg merke til at vi samtidig definerte navnet på funksjonen slik at vi ikke trenger å skrive math.cos, men bare cos • Etter at en funksjon er importert kan den brukes fritt  • Dersom navnene på importerte funksjoner ikke passer deg, kan du gi dem nye ved importen. Eksempel: from math import sin as math_sin, pi as math_pi print math_sin(math_pi)

  27. Importere hele pakken from math import * print cos(pi) print sin(e) # Her regner vi også ut ut sinus til e, # e og sin er importert fra math. I tillegg til standard python-pakker skal vi her bruke scitools og numpy

  28. Bruker-input • raw_input(x) leser alt, som tekst. Tekst = raw_input (‘Angi temperaturen i °C: ’) TCelsius = float(Tekst) • input(x) leser tall: TCelsius = input(‘Gi temperaturen i °C: ‘)

  29. Eval(x) Eval(x) funksjonen evaluerer (regner ut) matematiske uttrykk #-*- coding: utf8 -*- from math import * print ’Velkommen til pythonkalkulatoren \n’ while s != ’STOPP’: print ’Skriv inn uttrykket du ønsker å evaluere’ s = raw_input(’For å avslutte skriv STOPP. \n’) if s != ’STOPP’: print ’\n’ + "Resultatet ble: " + str(eval(s)) print ’På gjensyn’ • Tekststrengen \n betyr ny linje. • Hva skjer hvis du ikke svarer STOPP til slutt? Å legge sammen tekster (Tekst1+Tekst2 eller ‘tekst’+’en annen tekst’ kalles “concatenation”

  30. Feil-håndtering • Syntaksfeil • Kompilatoren gir deg indikasjon på hvor feilen er • Men dette kan være misvisende • Innrykksfeil • Perentesfeil • NameError • IndexError • TypeError • Value • Run-time error • Feil ved brukerinput • ….og mange andre muligheter

  31. Feilhåndtering ved try - except try: <utsagn> except: <utsagn> • Programmet prøver “try”-delen. Dersom det kræsjer hopper det til “except”-delen. Eksempel: mangler_verdi = True while mangler_verdi: try: C = float(raw_input(’Oppgi temperaturen i grader celsius’)) mangler_verdi = False except: print "Du maa oppgi et tall!“ print C, ‘ °C ‘,C+273.15,’ K’

More Related