Einfache Frage zu Funktionen und return

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
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

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!
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()
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

BlackJack: Das geht auch kürzer :lol:

Code: Alles auswählen

>>> import random
>>> def zufall():
...     zufalla = random.randint(1, 2)
...     return chr(zufalla + 96)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

@derdon: stimmt.

Code: Alles auswählen

def zufall():
    return "ab"[random.randint(0,1)]
Das Leben ist wie ein Tennisball.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Dann kannste ja auch gleich

Code: Alles auswählen

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