Variable macht while unbrauchbar

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
seiby
User
Beiträge: 13
Registriert: Samstag 30. April 2011, 05:50

Hallo,
folgender Code funktioniert ohne Probleme wenn keine Variable benutzt:

Code: Alles auswählen

def loop():
    i = 0

    numbers = []

    while i < 10:

        print "At the top i is %d" % i

        numbers.append(i)



        i = i + 1

        print "Numbers now: ", numbers

        print "At the bottom i is: %d" % i



    print "The numbers: "

    for num in numbers:

        print num




      
loop()
Sobald ich aber eine Variable einbringe (zahl):

Code: Alles auswählen

def loop(zahl):
    i = 0

    numbers = []

    while i < zahl:

        print "At the top i is %d" % i

        numbers.append(i)



        i = i + 1

        print "Numbers now: ", numbers

        print "At the bottom i is: %d" % i



    print "The numbers: "

    for num in numbers:

        print num




zahl = raw_input("> ")        
loop(zahl)
wiederholt sich die Schleife endlos.
Woran liegts?
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Das Problem ist, dass raw_input() einen String zurückliefert, den du dann mit einer Zahl vergleichst.

Code: Alles auswählen

>>> 11 < "10"
True
Versuch mal:

Code: Alles auswählen

zahl = int(raw_input("> "))
Und lies, was zu int() und raw_input() in der Doku steht.
In specifications, Murphy's Law supersedes Ohm's.
Micky2010
User
Beiträge: 34
Registriert: Donnerstag 19. Mai 2011, 17:06
Wohnort: Hessen

Besser erklärt, die variable zahl ist nicht definiert!

Viele Grüße Micky2010
Zuletzt geändert von Micky2010 am Dienstag 9. August 2011, 14:06, insgesamt 1-mal geändert.
Errare humanum est, in errore perseverare stultum (Irren ist menschlich, im Irrtum verbleiben ist dumm)
Manus manum lavat (Eine Hand wäscht die andere)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Micky2010 hat geschrieben:Wenn du am Ende NICHT sagst das der Pc die def ausführen soll kommt ein leeres Fenster.
Könntest du mal etwas ausführlicher erläutern, was du hiermit eigentlich sagen möchtest?
seiby
User
Beiträge: 13
Registriert: Samstag 30. April 2011, 05:50

pillmuncher hat geschrieben:Das Problem ist, dass raw_input() einen String zurückliefert, den du dann mit einer Zahl vergleichst.

Code: Alles auswählen

>>> 11 < "10"
True
Versuch mal:

Code: Alles auswählen

zahl = int(raw_input("> "))
Und lies, was zu int() und raw_input() in der Doku steht.
Super, danke :D
Antworten