bild
Skolan för
elektroteknik
och datavetenskap

Laboration 1 - Python!


Checka in på denna kursomgång

För att du ska kunna få dina labbar godkända är det viktigt att du gör

res checkin tilda06

Om ni är två som labbar tillsammans så måste ni båda två logga in varsin gång och göra res checkin tilda06. Under kursen kan du med kommandot res show tilda06 kolla att dina labbar har blivit rapporterade.

När du har checkat in på denna kursomgång kan du även skriva
course join tilda06
Det förbättrar din miljö lite grann genom att aktualisera din course-home-page.html och genom att göra pythonkommandot tillgängligt. Pröva också course help. Om du ska labba ihop med u1pnyxtr kan course labdir tilda06 u1pnyxtr vara lämpligt. Se till att din labbkompis på sitt konto gör motsvarande kommando med ditt användarnamn, så kommer ni att få en gemensam katalog tilda06 där ni kan spara alla program ni skriver i kursen.


SimaManager

Kommandot sm startar hjälpkön, eventuellt först efter module add sima. Denna kö använder du när du när du vill få tag på en assistent, till exempel för att fråga om hjälp eller för att redovisa dina färdiga labbar.


Pythontolken

Kommandot python startar pythontolken, eventuellt först efter
module add python

Pythontolken fungerar som Matlab men måste importera alla mattefunktioner.

>>> 17*17                               
>>> a=17
>>> a*a                                 
>>> sqrt(a)                             #Går inte så bra.
>>> from math import sqrt               #eller from math import * 
>>> sqrt(a)                             #Nu går det.
>>> for x in 17,666,4711:               #Glöm inte kolon på slutet!
>>>	print "Roten ur",x,"är",sqrt(x) #Gör indrag med tab-tangent
>>>                                     #Extra returtryckning avslutar
>>> while a>1:                          #Glöm fortfarande inte kolon!
>>>     a-=1                            #Betyder som i Java a=a-1
>>>     print a,                        #Kommat ger samma rad
>>>
>>> def dubbla(x):			#Glöm inte kolon!
>>>     return x+x
>>>
>>> dubbla(17)
>>> dubbla("oj")
>>> dubbla(dubbla("oj"))
>>> ctrl-D                              #ctrl-D avslutar python

För programskrivning är pythontolken mindre användbar och man skriver hellre pythonprogram i Emacs.


Att köra pythonprogram

Skapa i din katalog tilda06 en underkatalog lab1 och kopiera filen gissa.py dit. Kör programmet med

python gissa.py

Om du inte vinner kan du köra flera gånger.

Ta in filen i Emacs. Som du ser går Emacs över i Python-tillstånd och det betyder bland annat att den sköter indrag själv (så gott det går). Under Options-menyn finns alternativet Syntax Highlighting. Väljer du därunder In This Buffer ser Emacs till att färglägga programmet.

Nu ska du ändra lite på koden så att vinstföremålet väljs slumpmässigt. Enklast är det att använda random.choice(vinstlista) om du importerat modulen random och tilldelat vinstlista en lista av saker, till exempel ("pengar","berömmelse","en levande python").

Hellre än ett självständigt program vill du ha något som kan anropas med gissa() och då kör en spelomgång. Kopiera koden till filen spel.py och sätt in en rad def gissa(): överst. Alla rader nedanför måste nu ha ett extra indrag, men försök inte göra det för hand - man gör lätt bort sej! Två tangenttryckningar räcker: Markera alla rader som ska flyttas till höger och ge emacskommandot ctrl-C >.

Längst ner kan du skriva ditt enradiga huvudprogram som gör anropet. Provkör!

Ta bort den understa raden igen och gör en egen fil för huvudprogrammet som får heta lab1.py. Det måste nu importera din spelfil innan det gör anropet. Provkör!

Det fulländade programmet ska ge användaren följande meny.

Välj spel:
1 Gissa tal
2 Först till 21
3 Sluta
Du får från kurskatalogen kopiera filen tjugoett.py och lägga in även den i spel-filen, så att den kan anropas tjugoett(). Överst i spel-filen ska du definiera def spela(nr): som beroende på nr anropar ett av spelen.

Nu kan ditt huvudprogram i lab1.py klara sej med att importera en enda sak:

     from spel import spela
Det här datalogiska greppet kallas abstraktion. Förklara kort vad det innebär och varför det är bra!

Redovisa ditt program för någon handledare och passa på att fråga om det du undrar över!




Väl labbat av ......................................... medger.............................. den .................


Sidansvarig: Magnus Rosell <rosell@csc.kth.se>
Uppdaterad 2006-08-25