Presentation laddar. Vänta.

Presentation laddar. Vänta.

2D1311 Programmeringsteknik med PBL Föreläsning 3 Skolan för Datavetenskap och kommunikation.

Liknande presentationer


En presentation över ämnet: "2D1311 Programmeringsteknik med PBL Föreläsning 3 Skolan för Datavetenskap och kommunikation."— Presentationens avskrift:

1 2D1311 Programmeringsteknik med PBL Föreläsning 3 Skolan för Datavetenskap och kommunikation

2 Kapitel 5 & 6 Listor Uppslagslistor Funktioner Parametrar Namnrymden

3 Listor Listor liknar tupler, men är flottare: –Skrivs med hakparenteser: blommor=["ros","fiol","pion"] –Går att ändra (muterbara): blommor[1]="viol" –Har metoder: blommor.sort()

4 Rita listan Man brukar rita en lista så här: (Egentligen innehåller listan referenser till elementen, dvs adressen till den plats i minnet där elementet lagras.) blommor "pion" "ros" "viol" "pion" "ros" "viol"

5 Listmetoder MetodBeskrivning append(x) Lägger till x sist i listan. sort() Sorterar i stigande ordning. reverse() Vänder listan. count(x) Räknar antalet x i listan. index(x) Första förekomsten av x i listan. insert(i,x) Stoppar in x på plats i. pop([i]) Plockar ut elementet på plats i. remove(x) Tar bort första förekomsten av x.

6 # Visar hur man läser in till en lista lista=[] ord=raw_input("Vad rimmar på hus? ") while ord!="": lista.append(ord) ord=raw_input("Kan du ett till? ") print lista print "Du hittade", len(lista),"ord!" Exempel

7 Uppslagslistor En uppslagslista lagrar datapar. Varje datapar har en nyckel och ett värde. Nycklarna måste vara unika och omuterbara. Runt uppslagslistan används klamrar. Exempel: dagar={"januari":31,"februari":28,"mars":31} print dagar["mars"] dagar["april"]=30 uppslagslista=dictionary

8 Algoritm 1.Variabler: –Ordbanken ( ORDBANK ) –Slumpat ord ur ordbanken ( ordet ) –Antal felgissningar man får göra ( MAX_FEL ) –Ordmall, från början -----, korrekta gissningar fylls i vartefter: -å---, -ått- ( hittills ) –Antal felgissningar som spelaren gjort ( fel ) –Alla bokstäver som spelaren gissat på ( tagna )

9 2. Upprepa medan det finns gissningar kvar och ordet inte hittats: –Läs in ny gissning –Lägg till bokstaven bland tagna –Om bokstaven finns med i ordet: Lägg till den i ordmallen hittills –annars: Öka antal fel med ett 3. Efter slingan – kolla om ordet gissades rätt och skriv ut lämpligt meddelande.

10 # Ordgissning # # Michael Dawsons Hangman-program, kap 5, # modifierat av Linda - 5 februari 2006 import random # Skapa variablerna ORDBANK = ("SVAMP","MOSSA","HALLON","SKOG","ROT") ordet = random.choice(ORDBANK)# Slumpar ordet MAX_FEL = len(ordet) # Max felgissningar hittills = "-" * len(ordet) # Streckordet fel = 0 # Felaktiga gissningar tagna = [] # Redan gissade bokstaver

11 # Upprepa medan det finns gissningar kvar # och ordet inte hittats. while (fel < MAX_FEL) and (hittills != ordet): print "Du har gissat:", tagna print "Ordet hittills:", hittills gissning = raw_input("\nGissa bokstav: ") gissning = gissning.upper() # Kolla om bokstaven redan fanns while (gissning in tagna): print "Du har redan gissat:", gissning gissning = raw_input("Gissa igen: ") gissning = gissning.upper() tagna.append(gissning)

12 # Fanns bokstaven i ordet? if (gissning in ordet): print "\nJapp!", gissning, "finns med!" # Skapa ny hittills med nya gissningen i ny = "" for i in range(len(ordet)): if gissning == ordet[i]: ny += gissning else: ny += hittills[i] hittills = ny else: print "\nAttans,", gissning,\ "fanns inte med." fel += 1

13 # Vilket villkor avslutade slingan? if (fel == MAX_FEL): print "\nAjajaj..." else: print "\nJavisst!" print "Ordet var", ordet raw_input("\n\nAvsluta med Retur.")

14 Reklam för funktioner Man slipper skriva om samma satser på flera ställen. Enklare att testa delarna var för sig. Gör programmet mer överskådligt och lättläst. Kan återanvändas i nästa program!

15 Några kända funktioner FunktionIndata (parametrar) Utdata (returvärde) ut=input("Gissa:") strängen "Gissa" den inlästa gissningen ut=str(bredd) talet i variabeln bredd talet som sträng ut=len("kålrot") ut=len(tuppel) en sekvens, t ex strängen "kålrot" antal element i sekvensen ut=range(0,100,2) startvärde 0, övre gräns 100, steg 2 en lista med tal

16 Funktion eller metod? En metod är som en funktion men –Hör till en modul (t ex random ) eller en variabel (t ex en lista). –Anropas via modulen/variabeln med en punkt: random.randrange(3) lista.sort() –Kan ändra på variabeln den anropades från, t ex sortera listan.

17 Hur funktioner fungerar Funktionen anropas. Indata skickas in via parametrar, utdata returneras. Programmet fortsätter efter anropet.

18 Hur man definierar en funktion Skriv först def funktionsnamn ( parametrar ): Sen, indenterat: –En kommentarrad som beskriver vad funktionen gör, inom tredubbla citationstecken, tex """Beräknar arean""". –Satserna som funktionen ska utföra. –Allra sist return returvärde/returvärden

19 Exempel från Tic-tac-toe i kap 6 def ask_number(question, low, high): """Ask for a number within a range.""" response = None while response not in range(low, high): response = input(question) return response move = ask_number("Your move? (0 - 8):", 0, 8 ) Funktionen anropas så här: Funktionen definieras så här: question lowhigh returvärde

20 Namnrymder Varje gång en funktion anropas skapas en namnrymd för just det anropet. Parametrar och variabler som skapas inuti funktionen blir lokala (finns bara i funktionen). Man kan också komma åt globala variabler, som skapats utanför funktionen, men inte ändra på dom.

21 Namnrymdsexempel DIFF = 32 FAKTOR = 5.0/9.0 def celsius(f): """Konverterar fahrenheit till celsius""" c = (f-DIFF)*FAKTOR return c print "Idag blir det",celsius(13),"i Amherst." Konstanterna DIFF och FAKTOR är globala och finns i hela programmet. Parametern f och variabeln c är lokala och finns bara inuti funktionen celsius.

22 Diagnostiska prov På kursens webbsida finns två diagnostiska prov att öva på (fler tillkommer vartefter). Gå till www.nada.kth.se/kurser/kth/2D1311/05-06/S/ och välj Kursmoment  Lab2:Prov  Diagnostiska prov


Ladda ner ppt "2D1311 Programmeringsteknik med PBL Föreläsning 3 Skolan för Datavetenskap och kommunikation."

Liknande presentationer


Google-annonser