Seite 1 von 1

Einfache Frage zu Funktionen und return

Verfasst: Donnerstag 23. Juli 2009, 11:46
von kame

Code: Alles auswählen

import random
bla = 0

def zufall():
    zufalla = random.randint(1,2)
    if zufalla==1:
        bla = 1
    elif zufalla==2:
        bla = 2
    return bla

zufall()
print bla
Warum erhalte ich keine 1 oder 2, sondern 0 als Ergebnis?
Vielen Dank!

Verfasst: Donnerstag 23. Juli 2009, 11:54
von BlackJack
@kame: Weil das `blah` auf Modulebene ein anderes `blah` ist als der lokale Name in der Funktion.

Du weist den Rückgabewert der Funktion auch nirgens zu. Du rufst die Funktion auf und machst dann mit dem Ergebnis nichts.

Code: Alles auswählen

import random

def zufall():
    zufalla = random.randint(1, 2)
    if zufalla == 1:
        bla = 'a'
    elif zufalla == 2:
        bla = 'b'
    return bla

def main():
    bla = zufall()
    print bla

if __name__ == "__main__":
    main()

Verfasst: Donnerstag 23. Juli 2009, 13:07
von derdon
BlackJack: Das geht auch kürzer :lol:

Code: Alles auswählen

>>> import random
>>> def zufall():
...     zufalla = random.randint(1, 2)
...     return chr(zufalla + 96)

Verfasst: Donnerstag 23. Juli 2009, 13:17
von EyDu
@derdon: stimmt.

Code: Alles auswählen

def zufall():
    return "ab"[random.randint(0,1)]

Verfasst: Donnerstag 23. Juli 2009, 13:21
von derdon
Dann kannste ja auch gleich

Code: Alles auswählen

_=lambda:random.choice('ab')
machen.