TILDA, ÖVNING 1 Enkla pythonuppgifter 1 EURO TILL KRONOR Hur många kronor är 2003 euro? Eurokursen är 9.04. Skriv sex programversioner: * som bara räknar för 2003, * som frågar efter belopp, * som definierar en funktion, * som skriver en tabell för 1 till 20 euro, * som går i slinga och bryter vid inmatat nollbelopp, * som skriver tabell för 1..20 euro. 2 AHA, BARA 44 ÅR TILL PENSIONEN Skriv ett program som frågar efter personnummer och beräknar antal år till pensionen. Tre versioner: * grundversion, * väljer tilltalsord efter könssiffran, * använder vektorn ["damen","herrn"] 3 TIDMÄTNING Skriv ett program som tickar fram en stjärna i sekunden och så småningom talar om hur länge det är sen UNIX startade. 4 PERSONNUMMERKOLL Skriv ett program som kollar personnummer med hjälp av kontrollsiffran. ______________________________________________________________ Så här ser filen euro.py ut. Den körs med python euro.py om du gjort module add python. Observera att man kan skriva en dokumentationstext överst i filen. Den används bland annat av utvecklingsmiljöer för python. "Räknar om eurobelopp till kronor" kurs=9.04 #Bra att samla konstanter i början # Version 0 print "2003 euro =",2003*kurs,"kronor" # Version 1 läser ett inmatat belopp eu=input("Belopp i euro: ") kr=eu*kurs print eu,"euro är",kr,"kronor" print #Version 2 definierar en funktion def euro2kronor(euro): kronor=euro*kurs kronor=0.01*int(100*kronor) #Avrundade ören return kronor eu=input("Belopp i euro: ") kr=euro2kronor(eu) print eu,"euro är",kr,"kronor" print #Version 3 skriver tabell med for-slinga for eu in range(1,21): print eu,"euro = ",euro2kronor(eu),"kronor" print #Version 4 har while-slinga och if-else-sats while eu>0: eu=input("Belopp i euro (noll avslutar): ") if eu>2000000: print "För stort belopp!" #En int är högst två miljarder else : print euro2kronor(eu),"kronor" _________________________________________________________________ "Hämtar information ur personnumret" now=2003 pension=65 #Version 1 klipper ut delsträng pnr=raw_input("Personnumret, tack (tio siffror): ") born=1900+int(pnr[0:2]) #Två första tecknen görs om till int age=now-born print "Aha, hela",age,"år i år!" print "Bara",pension-age,"år till pensionen..." #Version 2 kollar udda/jämnt sex=int(pnr[8])%2 #Noll för damer, ett för herrar print "En äldre", if sex==0: print "dam!" else: print "herre!" #Version 3 använder strängvektor sexname=["damen","herrn"] print "Ska jag hjälpa",sexname[sex],"över gatan?" _________________________________________________________________ "Tickar fram stjärnor, beräknar tid sedan UNIX-starten 1 jan 1970" from time import sleep,time for i in range(10): sleep(1) print "*", print s=int(time()) m=s/60 s=s%60 h=m/60 m=m%60 d=h/24 h=h%24 print "UNIX har nu gått i",d,"dagar,",h,"h,",m,"min,",s," s" _________________________________________________________________ "Kollar personnummers korrekthet" days=[31,29,31,30,31,30,31,31,30,31,30,31] def dubbla(k): # siffran 7->14->5 k=2*k if k>9: k-=9 return k def check(pnr): sum=0 for i in [1,3,5,7,9]: sum+=int(pnr[i]) for i in [0,2,4,6,8]: sum+=dubbla(int(pnr[i])) return sum%10==0 while 1: pnr=raw_input("Skriv ett personnummer (tio siffror), retur avslutar: ") if not pnr: print "Tack och hej!" break if len(pnr)!=10: print "Tio siffror, tack!" continue month=int(pnr[2:4]) if month<1 or month>12: print "Månad",month,"finns inte!" continue day=int(pnr[4:6]) if day<1 or day>days[month-1]: print "Det finns inte",day,"dagar den månaden" continue if check(pnr): print "Rätt" else: print "Fel"