Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  10 2461
Hei, jeg har nettopp begynt å prøve å lære meg enkel python programering, det har godt bra så langt, det er bare noe som irrirterer meg,(vet ikke om det er et problem eller om det skal være sånn, anyways kommer tilbake til det senere).

Jeg fant en program der man kunne beregne celcius til farenheit, også utvidet jeg det til å ta med kelvin.

Deretter lagde jeg et program som regner om fra meter til mil, yard o.s.v.

Selve problemet mitt er: når jeg ikke kjører programmet via python GUI, men bare dobbel klikker på det så skal det poppe opp i noe cmd lignende boks, og det gjør det med det første programmet, mens med det andre programmet "blinker bare". Altså det bare popper opp, også går vekk med engang uten at jeg får gjort noe.

Dette er det første programmet som jeg utvidet.

def print_options():
print "Options:"
print " p) Vis Meny"
print " c) Beregn celsius til farenheit og kelvin"
print " f) Beregn fahrenheit til kalvin og celcius"
print " k) Beregn kelvin til celcius og farenheit"
print " q) Avslutt program"

def celsius_til_farenheit(c_temp):
return 9.0 / 5.0 * c_temp + 32

def farenheit_til_celsius(f_temp):
return (f_temp - 32.0) * 5.0 / 9.0

def kelvin_til_celcius(kc_temp):
return kc_temp - 273

def celcius_til_kelvin(k_temp):
return k_temp + 273

def kelvin_til_farenheit(kf_temp):
return (kf_temp * 9.0 / 5.0) - 480

def farenheit_til_kelvin(fk_temp):
return (fk_temp + 460) * (5.0 / 9.0)

choice = "p"
while choice != "q":
if choice == "c":
temperatur = input("Celsius temperatur: ")
print "Farenheit:", celsius_til_farenheit(temperatur), "grader", "and", "Kelvin:", celcius_til_kelvin(temperatur), "grader"
elif choice == "f":
temperatur = input("Farenheit temperatur: ")
print "Celsius:", farenheit_til_celsius(temperatur), "and", "Kelvin:", farenheit_til_kelvin(temperatur), "grader"
elif choice == "k":
temperatur = input("celcius temperatur: ")
print "Celcius", kelvin_til_celcius(temperatur), "and", "Farenheit:", kelvin_til_farenheit(temperatur), "grader"
elif choice != "q":
print_options()
choice = raw_input("option: ")

Også kommer det jeg lagde.

def print_options():
print "Valg"
print " v) Vis Meny"
print " m) Beregn meter om til centimeter, milimeter, yards, kilometer, mil, foot, tommer og nautiske mil"
print " y) Beregn yard om til centimeter, milimeter, meter, kilometer, mil, fot, tommer og nautiske mil"
print " k) Beregn kilometer om til centimeter, milimeter, meter, yard, mil, fot, tommer og nautiske mil"
print " mil) Beregn mil om til centimeter, milimeter, meter, kilometer, yard, fot, tommer og nautiske mil"
print " n) Beregn nautiske mil om til centimeter, milimeter, meter, kilometer, mil, fot, tommer og yard"
print " f) Beregn fot om til centimeter, milimeter, meter, kilometer, mil, yard, tommer og nautiske mil"
print " t) Beregn tommer om til centimeter, milimeter, meter, kilometer, mil, fot, yard og nautiske mil"
print " mm) Beregn milimeter om til centimeter, meter, yards, kilometer, mil, foot, tommer og nautiske mil"
print " c) Beregn centimeter om til millimeter, meter, yards, kilometer, mil, foot, tommer og nautiske mil"
print " a) For å avslutte program"

def meter_ti_centimeter(mc_beregn):
return mc_beregn * 100

def meter_til_millimeter(mm_beregn):
return mm_beregn * 1000

def meter_til_kilometer(mk_beregn):
return mk_beregn / 1000

def meter_til_mil(mmil_beregn):
return mmil_beregn / 10000

def meter_til_yard(my_beregn):
return my_beregn * 1.0936133

def meter_til_natuiske(mn_beregn):
return mn_beregn / 1852

def meter_til_fot(mf_beregn):
return mf_beregn * 3.2808399

def meter_til_tommer(mt_beregn):
return mt_beregn * 39.3700787


def yard_til_meter(ym_beregn):
return my_beregn / 1.0936133

def yard_til_kilometer(yk_beregn):
return yk_beregn / 1.0936133 / 1000

def yard_til_mil(ymil_beregn):
return ymil_beregn / 1.0936133 / 10000

def yard_til_nautiske(yn_beregn):
return yn_beregn / 1.0936133 / 1852

valg = "v"
while valg != "a":
if valg == "m":
lengde = input("Meter tilsvarer ")
print meter_ti_centimeter(lengde), " Centimeter"
print meter_til_millimeter(lengde), " Milimeter"
print meter_til_kilometer(lengde), " Kilometer"
print meter_til_mil(lengde), " Mil"
print meter_til_yard(lengde), " Yard"
print meter_til_natuiske(lengde), " Nautiske Mil"
print meter_til_fot(lengde), " Fot"
print meter_til_tommer(lengde), " tommer"
elif valg == "yard":
lenge = input ("Yard tilsvarer ")
print yard_til_meter(lengde), " Meter", yard_til_kilometer(lengde), " Kilometer"
print yard_til_mil(lengde), " Mil", yard_til_nautiske(lengde), " Nautiske Mil"
elif valg != "a":
print_options()
valg = raw_input("Valg: ")

Og ja det er ikke helt ferdig enda som dere ser :=)

så mitt spørsmål er jo da, skal det bare poppe opp og deretter gå vekk, (noe som da bare skjer med det ene programmet) Eller har jeg glemt å skrive inn en linje som gjør at programmet "holder" seg opp?


Beklager på forhånd mot dårlige setninger skrifeleifs osv.
Takk for alle svar.
Du kan prøve ved å eksekvere programmet i en cmd boks.
Husker ikke 100% hvordan man eksekverer python nå, men her er "pseudo":
start -> kjør: cmd
python program.py

Jeg vil anta at du vil se en feilmelding eller at det hele blir eksekvert og så avslutter. Gjør du det på denne måten lukker ikke vinduet seg med en gang koden er kjørt.
Vel, denne delen inneholder en ordentlig feil, og en ikke-så-ordentlig feil

Kode

elif valg == "yard":
lenge = input ("Yard tilsvarer ")
print yard_til_meter(lengde), " Meter", yard_til_kilometer(lengde), " Kilometer"
print yard_til_mil(lengde), " Mil", yard_til_nautiske(lengde), " Nautiske Mil"
Den ikke-så-ordentlige feilen er at du skriver valg == "yard", men sier i menyen at verdien "y" tilsvarer yard, slik som "m" tilsvarer meter. Men det er ikke en syntaktisk feil, så det spiller ingen rolle for problemet du har nå.

Den ordentlige feilen er at du tilordner en verdi til variabelen lenge, mens sjekker på variabelen lengde.

Jeg tror ikke denne feilen gjør at programmet ikke kjører, men i python så er indentering viktig. Derfor er det fint om du kan poste koden på nytt i [ CODE ]-tags slik at indenteringen beholdes, ettersom koden faktisk ikke er komplett uten indenteringen.

For øvrig er det en feil waiting to happen at du har kalt den ene funksjonen meter_ti_centimeter med ti, i stedet for til slik som alle de andre tilsvarende funksjonene.
Sist endret av Provo; 29. november 2009 kl. 08:17.
Bruk nå kode tagger.
Et altenativer du kan se på.
Se hvordan denne kjørere og prøv og gi feil input.

Kode

def celsius_til_farenheit(c_temp):
    return 9.0 / 5.0 * c_temp + 32

def celcius_til_kelvin(k_temp):
    return k_temp + 273

def main():
    '''Main menu and info ''' 
    while True:               
        print 'Welcome to my menu\n'
        print '(1) Calculate celsius to farenheit'
        print '(2) Calculate farenheit to celsius'
        print '(q) Quit' 
        choice = raw_input('Enter your choice: ') 
        if choice == '1':
            while True:
                try: #You have to use som kind off exception handling when user input
                    temperatur = input("Celsius temperatur: ")
                    #.2f we make it a float with 2 decimal
                    print "Farenheit: %.2f and kelvin: %.2f"  %  (celsius_til_farenheit(temperatur), celcius_til_kelvin(temperatur))
                    break  #we break out off loop and back to meny
                except:
                    print 'Numbers only'
        elif choice == '2':
            print 'No kode yet'       
            pass 
        elif choice == 'q': 
            exit() 
        else: 
            print 'Not a correct choice:', choice 

if __name__ == '__main__':
    main()
Ja, det var mange små feil, satt oppe kl 0500 å lagde denne :=)
Men allikevel så det ikke ut som om det var disse små feila som gjorde utslaget.

Kode

 def print_options():
    print "Valg"
    print " v) Vis Meny"
    print " m)   Beregn meter om til centimeter, milimeter, yards, kilometer, mil, foot, tommer og nautiske mil"
    print " y)   Beregn yard om til centimeter, milimeter, meter, kilometer, mil, fot, tommer og nautiske mil"
    print " k)   Beregn kilometer om til centimeter, milimeter, meter, yard, mil, fot, tommer og nautiske mil"
    print " mil) Beregn mil om til centimeter, milimeter, meter, kilometer, yard, fot, tommer og nautiske mil"
    print " n)   Beregn nautiske mil om til centimeter, milimeter, meter, kilometer, mil, fot, tommer og yard"
    print " f)   Beregn fot om til centimeter, milimeter, meter, kilometer, mil, yard, tommer og nautiske mil"
    print " t)   Beregn tommer om til centimeter, milimeter, meter, kilometer, mil, fot, yard og nautiske mil"
    print " mm)  Beregn milimeter om til centimeter, meter, yards, kilometer, mil, foot, tommer og nautiske mil"
    print " c)    Beregn centimeter om til millimeter, meter, yards, kilometer, mil, foot, tommer og nautiske mil"
    print " a)   For å avslutte program"

def meter_til_centimeter(mc_beregn):
    return mc_beregn * 100

def meter_til_millimeter(mm_beregn):
    return mm_beregn * 1000

def meter_til_kilometer(mk_beregn):
    return mk_beregn / 1000

def meter_til_mil(mmil_beregn):
    return mmil_beregn / 10000

def meter_til_yard(my_beregn):
    return my_beregn * 1.0936133

def meter_til_natuiske(mn_beregn):
    return mn_beregn / 1852

def meter_til_fot(mf_beregn):
    return mf_beregn * 3.2808399

def meter_til_tommer(mt_beregn):
    return mt_beregn * 39.3700787


def yard_til_meter(ym_beregn):
    return my_beregn / 1.0936133

def yard_til_kilometer(yk_beregn):
    return yk_beregn / 1.0936133 / 1000

def yard_til_mil(ymil_beregn):
    return ymil_beregn / 1.0936133 / 10000

def yard_til_nautiske(yn_beregn):
    return yn_beregn / 1.0936133 / 1852

valg = "v"
while valg !=  "a":
    if valg == "m": 
        lengde = input("Meter tilsvarer ")
        print meter_til_centimeter(lengde), " Centimeter"
        print meter_til_millimeter(lengde), " Milimeter"
        print meter_til_kilometer(lengde), " Kilometer"
        print meter_til_mil(lengde), " Mil"
        print meter_til_yard(lengde), " Yard"
        print meter_til_natuiske(lengde), " Nautiske Mil"
        print meter_til_fot(lengde), " Fot"
        print meter_til_tommer(lengde), " tommer"
    elif valg == "y":
        lengde = input ("Yard tilsvarer ")
        print yard_til_meter(lengde), " Meter", yard_til_kilometer(lengde), " Kilometer"
        print yard_til_mil(lengde), " Mil", yard_til_nautiske(lengde), " Nautiske Mil"
    elif valg != "a":
        print_options()
    valg = raw_input("Valg: ")
Sitat av morten Vis innlegg
Du kan prøve ved å eksekvere programmet i en cmd boks.
Husker ikke 100% hvordan man eksekverer python nå, men her er "pseudo":
start -> kjør: cmd
python program.py

Jeg vil anta at du vil se en feilmelding eller at det hele blir eksekvert og så avslutter. Gjør du det på denne måten lukker ikke vinduet seg med en gang koden er kjørt.
Vis hele sitatet...


Ja det funket, da fikk jeg denne feilmedingen:

File "C:/Python26\beregn_lengde.py", line 13
SyntaxError: Non-ASCII character '\xe5' in file C:/Python26\beregn_lengde.py on line 13, but no encoding declared; see http://www.python.org/peps/pep-0263.html

Men har ikkje peiling på hva det betyr..
I linje 13 for å
Du for feilmeldingen p.g.a (øæå)

Python bruker standar ASCII encoding.
Du kan definere en encoding som tar norske bokstaver i første line.
# -*- coding: cp1252 -*-

Litt rotete meny.
Se litt på koden min anngående feilbehandling(exception handling)

Kode

Valg: m
Meter tilsvarer k
Traceback (most recent call last):
  File "E:\1py\Div\gfgfgg.py", line 55, in <module>
    lengde = input("Meter tilsvarer ")
  File "<string>", line 0, in <module>
NameError: name 'k' is not defined
Så tenker du hvem idiot skriver k når jeg spør om meter.
Du kan ikke stole på bruker,og ved tastefeil skal ikke programmet kræsje.
ah takker, det funket nå

Men jeg bare lurte på en ting, går det ann å programme i python slik at man får et utseende som hvis man programmerer i actionscript 3.0?

Lage knapper og input/dynamic boxer?
Ja du må lære deg et (GUI)Graphical user interface toolkit.
Tkinter kommer med python.
Wxpython - PyQt - pyGTK er andre bra gui verktøy.
Jeg bruker stort sett Wxpython.

Wxpython har demo code som du kan kjøre.
Du ser altså gui live,hvor du kan prøver ut alle funksjoner.
http://www.wxpython.org/
Last ned install.
Finn win32-docs-demos
Pakk ut til eksp c:\demo
Start->kjør->cmd
C:\demo\demo>python demo.py(nå stater demo)

Virker det ser det sånn ut.
http://bildr.no/thumb/536034.jpeg

Andre muligheter er og bruke .NET eller jave sine bibliotektil til og lage gui.
Mere info her.
http://www.codeplex.com/IronPython
http://www.jython.org/
Nice takker := )
En side som er grei og se på,har tutorials for de fleste gui toolkit.
http://zetcode.com/
:d Det var det neste eg skulle spørre deg om. tutorials : =)