Litt mere python.
#-----------------|
Editor |--------------------#
Det er viktig og ha en god editor.
Disse er bra er
ulipad eller
pyscripter
Selv bruker jeg
komodo ide
#-----------------|
Hvorfor starte med python? |--------------------#
Philip Guo fra standford
why python
Paul Prescod O'Reilly
why i promote python
Nok om det tar litt basic stuff.
Si du lurer på gjenommsnittfart på si rekorden på 200m,som er 19.31
Eller i km si vi du løper 3 km på 15min,hva er gjenommsnittfarten?
Er ikke dette veldig lett og programmere i python?
Jo det er det,men vi skal se litt på bruker input og exceptions handling.
Vi skal også gå over til OOP og dokumentere koden for gjenbruk.
Vi ser også hvordan vi kan importerer koden og bruker den.
#---|
V1.py |---#
Kode
# 100m er 0.1km
lengde = 0.2
tid = 19.31
tid = tid / 3600
fart = lengde / tid
print 'Gjenommsnitt fart er',fart, 'km/t'
output-->
Gjenommsnitt fart er 37.2863801139 km/
Var det alt en ønsket oppnå er vi ferdig.
Men vi ønsker at bruker skal skrive inn lengde og tid.
#---|
V2.py |---#
Kode
# 100m er 0.1km
lengde = float(raw_input('Lengde i meter: ' ))
tid = 19.31
tid = tid / 3.600
fart = lengde / tid
print 'Gjenommsnitt fart er',fart, 'km/t'
output-->
Lengde i meter 200
Gjenommsnitt fart er 37.2863801139 km/
Vi ser det fungerer.
Men nå gjør to ting,prøv og taste in et tall eller bare trykk enter
Ved og taste en bokstav får vi.
ValueError: invalid literal for float(): h
Ved og taste enter får vi.
ValueError: invalid literal for float(): h
Ved feil brukerinput vil programmet kræsje.
Dette må vi ungå og fange opp disse exceptions.
#---|
V3.py |---#
Kode
# 100m er 0.1km
while True:
try:
lengde = float(raw_input('Lengde i meter: ' ))
tid = 19.31
tid = tid / 3.600
fart = lengde / tid
break
except:
print 'Venlist tast inn meter!'
print 'Gjenommsnitt fart er',fart, 'km/t'
Med except fanger vi opp alle exceptions.
Vi må også ha med en loop,så vi kommer tilbake til spørsmålet(while True:)
Må bryte ut av loopen,når rett svar er gitt(break)
Nå hopper jeg fram til klassen jeg har lagd.
#---|
V4.py |---#
Kode
class Gj(object):
'''
Denne klassen regner ut gjenomsnittfart.
Funksjoner er bruker input lengde(m) + tid(sek) || lengde(km) + tid(min)
import v3
v3.a.def-sek() og v3.a.def_min() brukes til og kalle opp metoder
'''
def tid_sek(self):
'''Rengner ut Gjenomsnitt fart,input er meter og sekunder'''
while True:
try:
# 100m er 0.1km
meter = float(raw_input('Tast inn lengde i meter(m): '))
sek = float(raw_input('Tast inn tid(sek): '))
tid = sek / 3.600
fart = meter / tid
print 'Distanse %sm Gjennomsnitfart %.2fkm/t' % (meter, fart)
break
except:
print 'Venlist tast et nummer!'
def tid_min(self):
'''Rengner ut Gjenomsnitt fart,input er kilomter og minutter'''
while True:
try:
# 100m er 0.1km
km = float(raw_input('Tast inn lengde i kilomter(km): '))
min = float(raw_input('Tast inn tid(min): '))
tid = min / 60
fart = km / tid
print 'Distanse %skm Gjennomsnitfart %.2fkm/t' (km, fart)
break
except:
print 'Venlist tast et nummer!'
a = Gj()
# a.tid_sek()
# a.tid_min()
Har satt koden i en klasse.
Har ordnet med bruker input for tid.
Har dokumenter hva koden gjør.
Har gjort så vi får dette formatet ut 37.28km/t (%.2fkm/t)
Nå lagrer V4.py så pyton finner filen.
Må være i sys.path for python
Kode
>>> import sys
>>> sys.path
#---|
importerer |---#
Kode
IDLE 2.6.2
>>> import v4
>>> dir(v4)
['Gj', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'a']
>>>
Vi ser at vi har en kopi av klassen 'a'
Vi ser nå på __doc__string
Kode
>>> print v4.a.__doc__
Denne klassen regner ut gjenomsnittfart.
Funksjoner er bruker input lengde(m) + tid(sek) || lengde(km) + tid(min)
import v4
v4.a.tid-sek() og v4.a.tid_min() brukes til og kalle opp metoder
Som dere ser,vet vi ikke noe om koden man importere er dette fint.
Denne printet også ut dok sting for metoder i klassen.
#---|
Tester klassen |---#
Kode
>>> v4.a.tid_min()
Tast inn lengde i kilomter(km): 3
Tast inn tid(min): 10.20
Distanse 3.0km Gjennomsnitfart 17.65km/t
>>> v4.a.tid_sek()
Tast inn lengde i meter(m): 200
Tast inn tid(sek): 19.31
Distanse 200.0m Gjennomsnitfart 37.29km/t
>>>
Neste del tror jeg blir og se litt på GUI med wxpython.
Sist endret av snippsat; 5. juni 2009 kl. 16:58.