Seite 1 von 1

Variable macht while unbrauchbar

Verfasst: Samstag 11. Juni 2011, 02:33
von seiby
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?

Re: Variable macht while unbrauchbar

Verfasst: Samstag 11. Juni 2011, 03:03
von pillmuncher
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.

Re: Variable macht while unbrauchbar

Verfasst: Samstag 11. Juni 2011, 13:06
von Micky2010
Besser erklärt, die variable zahl ist nicht definiert!

Viele Grüße Micky2010

Re: Variable macht while unbrauchbar

Verfasst: Samstag 11. Juni 2011, 13:32
von /me
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?

Re: Variable macht while unbrauchbar

Verfasst: Samstag 11. Juni 2011, 14:13
von seiby
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