У меня есть эта функция ниже, что я где-то сделал что-то неправильно.Зацикливание функции
def quantityFunction(product):
valid = False
while True:
if product is not None:
quantity = input("Please enter the amount of this item you would like to purchase: ")
for i in quantity:
try:
int(i)
return int(quantity)
valid = True
except ValueError:
print("We didn't recognise that number. Please try again.")
#If I get here, I want to loop back to the start of this function
return True
return False
пробежать, функция вызывается из основной части программы, как так: quantity = quantityFunction(product)
Возвращение Ложные в нижней части кода, чтобы сделать с тем, если продукт не является None, который необходимо после некоторого количества кода в другой функции, но пришлось использовать эту функцию.
Если пользователь вводит количество, это число, все работает нормально. Если это что-то еще, выводится сообщение об ошибке Value, и вы можете ввести другой вход. Если вы введете другое письмо и т. Д., Оно повторится снова, если вы введете номер, он примет его.
Однако он не возвращает номер, введенный после букв. Он просто возвращает 0.
Я подозреваю, что это связано с тем, как я повторяю код, то есть код должен возвращаться к началу функции, если он попадает в значение Ошибка.
Любые идеи?
У вас есть оператор возврата за исключением блока. Просто распечатайте сообщение об ошибке, и оно должно работать нормально. – SilentMonk
Почему вы определяете 'valid'? Он никогда не использовался. Почему цикл for? Почему бы не попробовать сразу преобразовать количество в int? – Ben
Теперь я взял возврат из блока except, функция не работает, как я могу сделать так? @SilentMonk –