729G04 Programmering och diskret matematik Python 2: Villkorssatser, sanningsvärden och logiska operatorer
Föreläsningsöversikt Vad händer när vi kör vår pythonkod? Programmerare Villkorssatser Jämförelser Vad som räknas som sant i Python Logiska operatorer
Från textfil till program
Python: pythoninterpretatorn IDLE Python: Programkod i språket Python
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.
Programmerare
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."
Villkorssatser
Villkorssatser, varför behöver vi dem? 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.
Villkorsuttryck - exempel 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.
Tre grund variationer om X, så gör Y om X, så gör A annars (dvs när inte X), gör B om X, gör A annars (dvs när inte X), om Y, gör B annars (dvs när inte X eller Y), om Z, gör C... i alla övriga fall (dvs när inget av ovanstående gäller), gör D
if om Y, så gör Y
Variant 1: enkelt villkor value = 0 if value == 0: print("sats 1") print("sats 2") sats 1 True Start <villkor> False sats 2 Slut
När är något sant?
Sanningsvärden Minns de boolska värdena True och False Alla nedanstående är falska (False), dvs alla uttryck förrutom följande är sanna (True) Värdet False Värdet None False None värdet 0 i alla former 0 0.0 Tomma sekvenser "" '' []
Sanningsvärden Saker som är sanna True "None" Saker som är falska False None 1 0 4.3 0.0 'hejsan' '' "kalle" "" [1, 2] []
CODELA: Sanningsvärden https://www.ida.liu.se/codela/as/729g04b/sanningsvarden
Jämförelseoperatorer Operation Meaning < strictly less than <= less than or equal > strictly greater than >= greater than or equal == equal!= not equal is is not object identity negated object identity
Fler av flera alternativ def calculate_allowance(age): if age > 10: print("du får 10kr") Start if age > 20: print("du får 20kr") if age > 30: 10 kr i veckopeng Ja Är du över 10 år? Nej print("du får 30kr") calculate_allowance(10) calculate_allowance(22) 20 kr i veckopeng Ja Är du över 20 år? Nej 30 kr i veckopeng Ja Är du över 30 år Nej Slut
CODELA: flera villkor https://www.ida.liu.se/codela/as/729g04b/fleravillkor
Exempel påsätt att få fram ett sanningsvärde hårdkoda ett sanningsvärde referera till en variabel jämföra två värden funktionsanrop till en funktion som returnerar ett sanningsvärde
Använd type() för att ta reda på datatyp För att ta reda på vilken datatyp något är, kan funktionen type() användas Exempel: type(3) - > int type("hej") - > str type(5.67) - > float
Logiska operatorer
Logiska operatorer Operator Exempel Kommentar and x and y om både x och y är sanna så är uttrycket sant or x or y om antingen x eller y är sant, eller både x och y är sanna not not x ger sanningsvärdet som är motsatsen till x, dvs not False == True
if med logik value = 10 if value!= 0 and value > 5: print("value not zero and larger than 5") if value >= 0 and value <= 5: print("value between 0 and 5") if not value == 0: print("value not 0") if value == 0 or value == 5: print("value 0 or 5")
Parenteser för att gruppera age = 4 name = "Guido" if (age < 10 and name == "Guido") or (age > 20): print("your are younger than 10 and called Guido,") print("or older than 20.")
CODELA: villkorssatser med logik https://www.ida.liu.se/codela/as/729g04b/logik
Input från användaren
Funktionen input() 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.
Vänta på att användaren ska skriva något def greeting(): name = input("what is your name?") print("hello " + name + ", nice to meet you.")
Demo av input()
if + else om X, gör A annars (dvs när inte X), gör B
Variant 2: Ett av två alternativ value = 42 if value == 42: print("sats 1") else: print("sats 2") print("sats 3") Start True False sats 1 <villkor> sats 2 # Observera skillanden nedan value = 42 if value == 42: else: print("sats 1") # Indentering är viktigt! # Här tillhör utskriften "Sats 3" # else- blocket print("sats 2") print("sats 3") sats 3 Slut
Syntax
if + elif [+ elif +... ] + else om X, gör A annars (dvs när inte X), om Y, gör B annars (dvs när inte X eller Y), om Z, gör C... i alla övriga fall (dvs när inget av ovanstående gäller), gör D
Variant 3: Ett av flera alternativ sunny = True Start cloudy = True night = True Trevligt! Ja Är det soligt? if sunny: print("nice") Nej elif cloudy: print("take some pictures?") elif night: print("hard to see the sky.") Bra fotoväder? Ja Är det molnigt? Nej else: print("i do not understand") Svår att se himlen då. Ja Är det natt? Nej Jag förstår inte.. Slut
elif jämfört med and
elif jämfört med and