CSC-KTH, DD1344, Grundläggande datalogi, Henrik Eriksson

Laboration 1 - Python!

Checka in på denna kursomgång

Under menyn Applications ska du leta fram och starta fyra program
  1. En webbläsare.
  2. En terminal.
  3. SimaManager (hjälpkö).
  4. IDLE (pythonmiljö).
Googla grudat10 så kommer du till kurssidan. Klicka på Rapp för att aktivera din kursregistrering. Logga in med ditt kth-konto (som för Mina Sidor). Det här måste ni göra bägge två! Under kursen kan ni kolla att era labbar är godkända i Rapp.

Skapa gemensam katalog med labbkompisen

Prova att skriva whoami i terminalfönstret för att se vilken av er som är inloggad just nu. Skriv följande i terminalfönstret:
   course labdir grudat10 kompisens_användarnamn
Låt sedan labkompisen logga in på sitt konto och ge kommandot
   course labdir grudat10 ditt_användarnamn
Nu har ni en gemensam katalog grudat10 där ni kan spara alla program ni skriver i kursen. Kolla i menyn Places att katalogen finns.

SimaManager

I Sima ska du välja kursen grudat. Denna kö använder du när det är full rulle under labbarna och 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. Är det lugnt så är det bara att vifta så kommer vi!

Pythontolken IDLE

IDLE 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 öppnar man i IDLE ett nytt fönster där man redigerar sitt program och kör det med Run module. Men det går också bra att skriva pythonprogram i Emacs och köra dom i terminalen. Gamla unixstofiler litar mer på det sättet att jobba.

Att köra pythonprogram

Skapa i din katalog grudat10 en underkatalog lab1 och kopiera en fil från kurskatalogen /info/grudat10, nämligen gissa.py. 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).

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! Markera alla rader som ska flyttas till höger och välj i menyn Shift region right.

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 .................