return value None

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
roelandt
User
Beiträge: 2
Registriert: Dienstag 19. Februar 2008, 21:13
Wohnort: Langnau
Kontaktdaten:

Hallo

Ich habe ein Problem das der return Wert manchmal None zurück gibt und manchmal den richtigen Wert. Was mach ich falsch?

gruss
Roel


1.file:

Code: Alles auswählen

import zufallsZahl
import rechnenCore

    
s1 = []
s1 = zufallsZahl.zufallsZahl()
print s1
2.file:

Code: Alles auswählen

import random
import division

a1 = ''
a2 = ''
s1 = []
def zufallsZahl():
    a1 = random.randint(1,10)
    a2 = random.randint(1,10)
    print a1, a2
    s1 = [a1, a2]
   
    if a1 % a2 == 0:
        print 'Wert von a1 und a2: ', a1,a2
        s1 = [a1, a2]
        print 'Wert von s1: ', s1
        return s1[:]
            
    else:
        print 'Ich bin im else'
        zufallsZahl()
3.file:

Code: Alles auswählen

def divisionTest(ersteZahl, zweiteZahl):
    return ersteZahl % zweiteZahl
def division(ersteZahl, zweiteZahl):
    return ersteZahl / zweiteZahl
Zuletzt geändert von roelandt am Dienstag 19. Februar 2008, 21:43, insgesamt 1-mal geändert.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Willkommen im Forum. Bitte packe deinen Code doch bitte noch in Code-Tags, so kann man den Quellcode kaum lesen und muss auf Grund der fehlenden Einrückung die Semantik approximieren ;-)

Ich vermute einfach mal, dass du im else-Teil

Code: Alles auswählen

return zufallsZahl()
meinst.

Schau dir doch bitte noch mal PEP8 an. Python ist kein Java ;-)

Und wozu ist eigentlich die Unterteilung in zwei Module gedacht ?!
roelandt
User
Beiträge: 2
Registriert: Dienstag 19. Februar 2008, 21:13
Wohnort: Langnau
Kontaktdaten:

sorry, hab nicht gesehen das beim copy paste die formatierung weg war. Ich will das die zweite zufallszahl durch die erste zufallszahl teilbar ist ohne rest oder dezimalstellen. die else schlaufe soll die zufallszahlen neu generiren wenn die if bedingung nicht erfüllt ist. dies funktioniert auch , aber der wert in s1 ist oft None
BlackJack

Und da hat EyDu schon gesagt, dass es daran liegt, dass Du im ``else``-Teil nichts zurück gibst!

Das sollte man aber sowieso nicht als Rekursion ausdrücken, sondern in einer Schleife.

Es sind zu viele Dateien. Den Inhalt der dritten Datei benutzt Du noch nicht einmal und so einfachen Operationen in Funktionen zu stecken ist nur interessant, wenn man die Funktion irgendwo als Argument übergeben möchte. Allerdings gibt's die schon im `operator`-Modul.

In der ersten Datei ist die Zuweisung in Zeile 5 überflüssig und in der zweiten Datei alle ausserhalb der Funktion. Was soll das!?

`s1` in `zufallsZahl()` ist überflüssig und man würde dort eher ein Tupel zurück geben. Das Kopieren vorm zurück geben ist auch überflüssig, weil das "Original" nach dem ``return`` ja garantiert nirgendwo anders verwendet wird.
Antworten