Stránka 1 z 1

python zádrhel #2

Napsal: 07 srp 2013 14:40
od funnyman
Ahoj, poraďte mi prosím kde je tady chyba:

Kód: Vybrat vše

from sys import argv

def createListFromZeroTo():
    script, MaxNumber = argv
    i = 0
    numbers = []
    while i < MaxNumber:
       print "at the top i is", i
       numbers.append(i)
       
       i += 1
       print "numbers now", numbers
       print "at the bottom i is", i
       
    print "the numbers:"

    for num in numbers:
        print num
       
createListFromZeroTo()


když nastavím nejvyšší číslo, do kterého má smyčka čísla jedno po druhém do seznamu přidávat napevno, např. 5, funguje to. Když nechávám číslo zjistit pomocí argv, tak to běží do nekonečna. Přitom když si před while-loop zkusím vytisknout to číslo (print MaxNumber), normálně ho to vypíše.
Je to určitě nějaké hloupé přehlédnutí. Díky za pomoc

Re: python zádrhel #2

Napsal: 07 srp 2013 15:08
od CZechBoY
čau,
není argv náhodou pole?

Re: python zádrhel #2  Vyřešeno

Napsal: 07 srp 2013 15:13
od funnyman
argv vezme parametr, který napíšeš za jméno souboru při jeho spouštění. v tomhle případě jej spouštím jako "python CestaKSouboru/jmenoSouboru.py 5". argv pak funguje tak, že "script" bývá název souboru (to tam, myslím, musí vždycky být, i když ho pak nevyužiješ), a pak si nastavíš proměnnou, která bere tu informaci z parametru při spouštění souboru, v tomhle případě MaxNumber.
Argv v tomhle případě funguje, když udělám jednoduchý soubor takto:

Kód: Vybrat vše

from sys import argv

def NapisCislo():
    script, MaxNumber = argv
    print MaxNumber

NapisCislo()

...vypíše to cokoliv, co je do MaxNumber zadané. Což mě teď připomíná, že možná bych mohl pythonu říct, že se jedná o číslo...

--- Doplnění předchozího příspěvku (07 Srp 2013 15:15) ---

aha, ano, bylo to tím. stačilo doplnit "MaxNumber = int(MaxNumber)"
tak je to vyřešené. díky za pomoc :)