Dagens Python 729G04 PYTHON 2 Mer om funktioner Villkorssatser JODY FOO Department of Computer and Information Science (IDA) Linköping University, Sweden Linköpings universitet 1 2 MEN FÖRST LITE ALLMÄNT OM PROGRAMMERING PYTHON SNABBREPETITION 3 4
IDLE Programkod Interpretator CPU Python: Programkod i språket Python Python: pythoninterpretatorn Vad är en textfil? En fil är en sekvens av information som lagras i filsystemet. I datorsammanhang pratar man t.ex. om bits och bytes, en byte är en siffra mellan 0 och 255. För att få fram en boktav så har man en tabell. En textfil är en fil som bara innehåller bytes som ska tolkas som tecken. Linköpings universitet 5 6 VEM ÄR PROGRAMMERARE? Data från National Center for Education Statistics National Center for Women in Information Technology Girl Scout Research Institute American Association of University Women Linköpings universitet 7 8
9 10 11 12
Citat från "The Computer Girls" Cosmopolitan 1967 "It's just like planning a dinner," explains Dr. Grace Hopper, now a staff scientist in systems programming for Univac. (She helped develop the first electronic digital computer, the Eniac, in 1946.) "You have to plan ahead and schedule everything so it's ready when you need it. Programming requires patience and the ability to handle detail. Women are 'naturals' at computer programming." 13 14 Ada Lovelace (Augusta Ada King, Countess of Lovelace) Augusta Ada King, Countess of Lovelace (10 December 1815 27 November 1852), born Augusta Ada Byron and now commonly known as Ada Lovelace, was an English mathematician and writer chiefly known for her work on Charles Babbage's early mechanical general-purpose computer, the Analytical Engine. Her notes on the engine include what is recognized as the first algorithm intended to be processed by a machine. Because of this, she is often considered the world's first computer programmer. NU TILLBAKA TILL PYTHON 15 16
Funktioner Funktioner f(x) = x + x f(x) = 4x def f(x): return x + x def f(x): return 4*x funktionsnamn argument returvärde indentering def f(x): print("g kan räkna.") return x + x Linköpings universitet Linköpings universitet 17 18 Funktioner def add_numbers(number1, number2): return number1 + number2! def say_hello(name, age): print("hello " + name) print("i see your are " + str(age) + " years old." return None CODELA 1: MERA FUNKTIONER http://www.ida.liu.se/codela/as/729g04/02a Linköpings universitet 19 20
Villkorssatser, varför behöver vi dem? VILLKORSSATSER Ett program måste kunna reagera på olika sätt beroende vilken indata den får, eller vilket tillstånd det är i. Ett sätt att göra detta är att använda villkorssatser, om-så-satser, if-then. 21 22 Villkorsuttryck - exempel Tre grund-variationer Om vi har räknat ända till 100, sluta räkna. Om användaren har skrivit 'sluta', gå ur programmet. Om klockan är 04:00, stäng av datorn. Om det finns ett nytt meddelande i inkorgen, spela upp ett fint ljud. Om användarens dator verkar befinna sig i Sverige, visa innehållet på svenska. if if-else if-elif-else 23 24
Variant 1: enkelt villkor Variant 2: Ett av två alternativ Start! Om <villkor> är sant: gör! Gör! Slut True Start <villkor> False Start! Om <villkor> är sant: gör Annars (dvs om ovantsående är falskt): gör! Gör sats 3! Slut Start True False <villkor> sats 3 Slut Slut 25 26 Variant 3: Ett av flera alternativ Observera! Start om X gäller, gör annars, om Y gäller, gör annars, om Z gäller, gör!! om inget av ovanstående gäller, gör Trevligt! Bra fotoväder? Svår att se himlen då. Är det soligt? Är det molnigt? Är det natt? g förstår inte.. Att välja ett av flera alternativ är inte det samma som att kolla om flera alternativ är sanna. Hur ska nedanstående tolkas? om ålder < 10 säg "hej" om ålder > 10 säg "hejsan" om ålder > 20 säg "hejhej" om ålder > 30 säg "goddag" Slut Linköpings universitet 27 28
Sanningsvärden True eller False NÄR ÄR NÅGOT SANT? Alla uttryck förrutom följande är sant (True). Dvs nedanstående är falska False värdet 0 i alla former: 0 0.0 Tomma sekvenser: "" '' [] 29 30 Sanningsvärden Sanningsvärden Dvs att följande har sanningsvärdet True "hejsan" 4 7.4 [1] [1, 6, "en lista"] True Saker som är sanna Saker som är falska True False "None" None 1 0 4.3 0.0 'hejsan' '' "kalle" "" [1, 2] [] 31 32
Hur får man fram ett sanningsvärde? Jämförelseoperatorer Genom att jämföra saker Genom att göra ett funktionsanrop till en funktion som returnerar ett sanningsvärde Genom att referera till en variabel Genom att hårdkoda ett sanningsvärde Operation Meaning < strictly less than <= less than or equal > strictly greater than >= greater than or equal == equal!= not equal is object identity is not negated object identity 33 34 OM FLER ÄN EN RÄCKER UPP HANDEN, SÅ BLIR DET EN SNABBDEMO, ANNARS FÅR NI HÖRA ETT LJUD VILLKORSSATSER I PYTHON 35 36
Syntax: enkelt villkor Syntax: ett av två alternativ +1 +2 37 38 Syntax: ett av två alternativ Syntax: ett av två alternativ +1 +2 +1 +2 39 40
Ett av två alternativ Ett av två alternativ +1 +2 +1 +2 41 42 Ett av två alternativ Syntax: Ett av fler alternativ +1 +2 el +1 +2 +1 +2 43 44
Syntax: Ett av fler alternativ Syntax: Ett av fler alternativ el +1 +2 +1 +2 el +1 +2 +1 +2 45 46 Syntax: Ett av fler alternativ Syntax: Ett av fler alternativ el +1 +2 +1 +2 el +1 +2 +1 +2 47 48
Syntax: Ett av fler alternativ Syntax: Ett av fler alternativ el +1 +2 +1 +2 el +1 +2 +1 +2 49 50 Syntax: Ett av fler alternativ Syntax: Ett av fler alternativ el +1 +2 +1 +2 el +1 +2 +1 +2 51 52
Syntax: Ett av fler alternativ Syntax: Ett av fler alternativ el +1 +2 +1 +2 el +1 +2 +1 +2 53 54 Syntax: Ett av fler alternativ Fler av flera alternativ Start Start el +1 +2 +1 +2 10 kr i veckopeng 20 kr i veckopeng Är du över 10 år? Är du över 20 år? 0 kr i veckopeng Slut +1 +2 +1 +2 10 kr i veckopeng 20 kr i veckopeng 30 kr i veckopeng Är du över 10 år? Är du över 20 år? Är du över 30 år Slut 55 56
Syntax Syntax +1 +2 else <sanningsvärde>: +1 +2 Vilket if hör det sista t till? +1 +2 else <sanningsvärde>: +1 +2 10 kr i veckopeng 20 kr i veckopeng Start Är du över 10 år? Är du över 20 år? 0 kr i veckopeng Slut 57 58 CODELA 2: VI PROVAR VILLKORSSATSER http://www.ida.liu.se/codela/as/729g04/02b LOGISKA OPERATORER 59 60
Logiska operatorer Exempel Operator Exempel Kommentar and or not x and y x or y not x om både x och y är sanna så är uttrycket sant om antingen x eller y är sant, eller både x och y är sanna ger sanningsvärdet som är motsatsen till x, dvs not False == True def turn_on_light(light_intensity): if light_intensity == 0: print("the light is now off.") if light_intensity > 0 and light_intensity < 50: print("the light is set to dim.") if light_intensity >= 50 and light_intensity < 100: print("the light shines bright.") if light_intensity >= 100: print("bright light! Bright light!") 61 62 Omskrivet exempel Parenteser för att gruppera def turn_on_light(light_intensity): if light_intensity == 0: print("the light is now off.") elif light_intensity < 50: print("the light is set to dim.") elif light_intensity < 100: print("the light shines bright.") print("bright light! Bright light!") if light_on and (night or dark): print "Ok, you can keep the light on." elif light_on and (day or bright): print "Better turn off the light." elif ((not light_on) or light_broken) and (night or dark): print "It sure is dark here." print "I don't care if the light is on or off." 63 64
CODELA 3: VILLKORSSATSER MED LOGIK http://www.ida.liu.se/codela/as/729g04/02b INPUT FRÅN ANVÄNDAREN 65 66 Funktionen input() Vänta på att användaren ska skriva något Använd funktionen input() för att ta läsa av en rad som användaren skriver in. Ex: svar = input("vad heter du? ") Ovanstående skriver ut strängen "Vad heter du?" och väntar på att användaren ska skriva in något följt av ett radbryt. Det användaren skrev tilldelas variabeln svar som en sträng. def greeting(): name = input('what is your name? ') print "Hello " + name + "!" Linköpings universitet 67 68
Demo av input() 69