View Single Post
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.

Kode

>>> help(v4)
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.