Я делаю домашнее задание и пытаюсь проверить, является ли число положительным целым числом, используя Try. где-то по пути он возвращает значение моего ввода, но возвращает отрицательное значение, даже после того, как я в конце концов ввожу действительное значение. скажем, сначала я набрал -10, он говорит мне ввести еще раз, затем я набираю 2, но результат все еще -10.
def takes_desicion(name):
print "Ok %s, now lets make a desicion what to do with your text.\n" %name
print "you can either- 1.leave it, 2.reverse it, or 3.make a new input."
while True:
try: #takes an input with exception- in this case, only integer.
desicion = int(raw_input("Hit your number to decide."))
print desicion
except ValueError:
print "Sorry, thats not a number."
continue
else: #if int is negetive, goes back to the function again, recursively
if desicion < 1:
print "That number is illegal."
takes_desicion(name)
break
return desicion
если я сначала ввожу -10, а второй ввод равен 2, я ожидаю, что вывод (возврат) будет 2. но его -10. Это значение, которое возвращает функция.
Вы снова вызываете функцию takes_desicion
в третьей последней строке, но ничего не делаете со значением этой функции. Вам нужно сохранить вновь возвращенное значение: desicion = takes_desicion(name)
Хотя вы должны просто использовать continue
вместо перехода к первому лайку цикла while
, нет необходимости снова вызывать функцию:
def takes_desicion(name):
print "Ok %s, now lets make a desicion what to do with your text.\n" %name
print "you can either- 1.leave it, 2.reverse it, or 3.make a new input."
while True:
try: #takes an input with exception- in this case, only integer.
desicion = int(raw_input("Hit your number to decide."))
print desicion
except ValueError:
print "Sorry, thats not a number."
continue
else: #if int is negetive, goes back to the function again, recursively
if desicion < 1:
print "That number is illegal."
continue
break
return desicion
См. также Запрашивать пользователя для ввода, пока он не даст правильный ответ.