Почему моя команда if if не работает [duplicate]

1

Я пытаюсь запрограммировать банкомат с этим кодом в python. Но, учитывая то, что вводится, он просто говорит, что карта успешно введена.

inputCard = input("Welcome to the atm machine, please insert your credit card (Type 'Yes' when you have done so) ") 

if inputCard == ['No', 'no']: #checks if card has been entered
    print ("Please retry")  

else:
   print ("Card is successfully inputed") '

Спасибо

  • 3
    должно быть, if inputCard in ['No', 'no']: ( inputCard - это не список). или, может быть, if inputCard.lower() == 'no' .
  • 0
    Вы также можете написать, if inputCard == 'No' or inputCard == 'no': чтобы проверить оба случая
Показать ещё 1 комментарий
Теги:
python-3.x

3 ответа

2

Оператор равенства == сравнивает, является ли вход, который является строкой, равным правой стороне, которая является списком. Интуитивно, список никогда не будет равен строке.

Итак, используйте оператор in чтобы узнать, есть ли ответ в возможных вариантах:

if inputCard in ('No', 'no'):

Альтернативно, конвертируйте ответ в нижний регистр, а затем используйте ==:

if inputCard.lower() == 'no'

Этот способ не примет no, No, NO и nO.

  • 0
    Это будет работать так же.
1

Вы сравниваете "inputCard" со списком. Пытаться:

if inputCard.lower() == "no":
0

inputCard is str, ["NO","no"] - list.They не будет равно. И вы можете попробовать это

if inputCard.lower() == 'no':

или же

if inputCard.upper() == 'NO':

Ещё вопросы

Сообщество Overcoder
Наверх
Меню