Здесь я сталкиваюсь с проблемой условной логики.
Я хочу получить значение от пользователя, но оно должно быть ограничено либо
'ABC','DEF' or'XYZ'
Если не предоставляется ни с одним извыше, программа должна дать пользователю еще один шанс войти, пока он не получит ввод только из ожидаемых значений
Мой фрагмент выглядит следующим образом: -
def foo():
inp_val=raw_input("Enter value\n>> ")
if inp_val.upper() not in {'ABC','DEF','XYZ'}:
print("Invalid Input")
foo()
return inp_val
inp = foo()
Вывод
Enter value
>> 42342d*@r2
Invalid Input
Enter value
>> abc
Проверка inp
в консоли Python: -
>> inp
ABC #(Expected)
42342d*@r2 #(Actual)
Почему это происходит?
Я тоже попробовал обратную логику: -
def bar():
inp_val=raw_input("Enter value\n>> ")
if inp_val.upper() in {'ABC','DEF','XYZ'}:
return inp_val
else:
print("invalid input")
bar()
inp = bar()
Вывод:
Enter value
>> 42342d*@r2
Invalid Input
Enter value
>> abc
В консоли:
>> inp
ABC #Expected
#(Actual)
Как получить фактическое значение?