Zunächst einmal gehe ich davon aus das die Vertiefung für Ihr Code:
numResponse = []
def inputInt(int):
while False:
value = input('Enter a value')
if value == int:
try:
numResponse.append(int(value))
except ValueError:
print('Invalid input - Try again.')
print('Value is', value)
value = inputInt('Enter an int: ')
Erste Sache ist, dass die letzten beiden Zeilen aus der Ordnung sind, den Wert nicht existiert, bis er von inputInt
zurückgegeben:
value = inputInt('Enter an int: ')
print('Value is', value)
aber value
wird immer None
da Ihre Funktion nie zurückkehren wird nichts. (Es gibt standardmäßig keine zurück.) Vielleicht möchten Sie zu einem bestimmten Zeitpunkt return value
, aber warum verwenden Sie eine Liste? Wenn Sie nur die Eingabe wollen, wenn es gültig ist, versuchen Sie einfach zu return int(value)
:
try:
return int(value)
except ValueError:
print('Invalid input - Try again.')
aber dies wird immer noch Probleme geben, weil Sie den int
builtin Namen mit dem Parameter abgedeckt haben bis:
def test(int):
return int("5")
test('Enter an int: ')
------------------------------------------
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
test('Enter an int: ')
File "<pyshell#21>", line 2, in test
return int("5")
TypeError: 'str' object is not callable
Wenn es soll die Aufforderung als Argument nehmen, dann sollten Sie es prompt
stattdessen nennen, aber versuchen Sie es mit eingebauten Namen zu vermeiden allgemein:
def inputInt(prompt):
while False: #this line is still wrong
value = input('Enter a value') #you don't use the prompt
if value == int: #this line is still wrong
try:
return int(value)
except ValueError:
print('Invalid input - Try again.')
value = inputInt('Enter an int: ')
print('Value is', value)
aber while False:
ist nicht sehr nützlich; eine while-Schleife wird Schleife, bis die Bedingung False also, wenn es es falsch beginnt dann nie etwas tut:
while False:
raise RuntimeError("EMPTY LOOP WAS EXECUTED?!?!?!")
dies den Fehler nie erhöhen würde, weil die Bedingung nicht wahr sein kann, in Ihrer Funktion, da die return
Aussage wird die Funktion verlassen, wird es auch aus der Schleife ausbrechen, so dass Sie einfach while True:
verwenden können und es wird nur aufhören, wenn ... nein, es würde tatsächlich nicht aufhören wegen if value == int:
.
if value == int:
wird nie wieder als wahr ausgewertet werden, da value
immer ein str
Objekt sein wird und wird nie jedoch auf den int
Typ Objekt, gleich sein, da Sie bereits try
ing zu konvertieren gibt es keine Notwendigkeit, dass der Eingang zu überprüfen ist, wird gelingen:
def inputInt(prompt):
while True:
#value = input(prompt) #probably want this instead?
value = input('Enter a value')
try:
return int(value)
except ValueError:
print('Invalid input - Try again.')
value = inputInt('Enter an int: ')
print('Value is', value)
wir sind hier, um Ihnen zu helfen, Ihre Probleme zu lösen. Eher dann vollständig antworten. Bitte lassen Sie uns wissen, welche Bemühungen Sie unternommen haben, dies zu tun. – Nehal
def inputInt (int): während value == False value = int (Eingabe) ('Geben Sie einen Wert ein') – kurt
versuchen Sie dies in Frage anstelle von – Nehal