2017-10-30 2 views
-1
print ("\n" * 100) 
def weight_rep(): 
    rep = 0 
    try: 
     rep = int(input("How many times would you like to enter a weight?\n")) 
     return rep 
    except ValueError: 
     print ("\n" * 100) 
     print("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*") 
     print("You must enter a valid number that is:\n1) Whole\n2) Positive") 
     print("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*") 
     weight_rep() 
     return rep 

rep = weight_rep() 

weight = [] 

for i in range (0, (rep)): 
    weightn = int(input("Please input weight " + str(i+1) +":\n")) 
    weight.append(weightn) 
    print (weight[i]) 
mean = sum(weight)/int(len(weight)) 
print("The average weight of these fruits is {0:.2f}g".format(mean)) 

Wenn ich eine richtige Nummer in der ersten Stufe ein, dieser einfache Code trägt wie erwartet auf, aber wenn ich etwas eingeben, die die weight_rep() Funktion wiederholt und dann etwas eingeben, um die Funktion kehrt nonetypePython Validierungsfunktion kehrt nonetype

+0

Nicht wahr. Diese Funktion kann None nicht zurückgeben. –

+0

Ihr rekursives Funktionsaufrufergebnis wird ignoriert. Im Falle eines Fehlers im ersten Versuch gibt Ihre veröffentlichte Version daher '0', * immer * zurück. Sie sollten die Rekursion hier sowieso nicht verwenden, sehen Sie das erste Duplikat, auf das ich Sie hinweise (Laden Sie die Seite neu). –

+0

Verwende 'rep = weight_rep()' oder einfach 'return weight_rep()' in 'except' part – Primoz

Antwort

1

diese Zeilen:

weight_rep() 
return rep 

Sollte sich:

return weight_rep() 

Obwohl ich einen rekursiven Aufruf nicht empfehlen würde, löst das obige Problem Ihr aktuelles Problem.

Verwandte Themen