Как сравнить с префиксом слова - PullRequest
0 голосов
/ 29 сентября 2018

Позвольте мне объяснить с небольшим количеством кода.

Код:

choice = raw_input("Do you like pineapple? Y/N: ")
if choice == "y".lower() or choice == "ye".lower() or choice == "yes".lower():
    print("Sammmmeee")
else:
    print("Nani! You criminal!")

Как я могу сделать это вместо того, чтобы делать:

if choice == "y".lower() or choice == "ye".lower() or choice == "yes".lower():

itавтоматически принимает "y", "ye" или "yes" без необходимости делать or столько?

Ответы [ 4 ]

0 голосов
/ 29 сентября 2018

Прежде всего, вы не должны применять lower к правой стороне, которая является постоянной и уже строчной.Вы должны применить его к переменной ввода:

choice = raw_input(...).lower()

Существует несколько способов проверить соответствие, которое вы ищете.Самым простым является использование startswith:

if 'yes'.startswith(choice):

Другой способ заключается в явной проверке содержимого в наборе или кортеже:

if choice in ('y', 'ye', 'yes'):

Это необходимо только в случаях, когдане подходит для простой проверки метода, например, если вы хотите добавить ok в список параметров.

Если вы хотите иметь несколько проверок функций, вы можете использовать any с выражением генератора:

if any(f(x) for f in ('yes'.startswith, 'ok'.startswith)):

Все тесты здесь имеют правильное короткое замыкание, как и ваше первоначальное выражение.

0 голосов
/ 29 сентября 2018

Вы можете просто выбрать первый символ ввода для сравнения с 'y'.Также обратите внимание, что вам нужно сделать ввод строчными.Таким образом, код становится:

choice = raw_input("Do you like pineapple? Y/N: ")[0]
if choice.lower() == "y":
    print("Sammmmeee")
else:
    print("Nani! You criminal!")
0 голосов
/ 29 сентября 2018

Это будет без учета регистра точно совпадать 'y', 'ye' и 'yes':

choice = raw_input("Do you like pineapple? Y/N: ")
if choice.lower() == 'yes'[:len(choice)]:
    print("Sammmmeee")
else:
    print("Nani! You criminal!")
0 голосов
/ 29 сентября 2018

Вы можете использовать startswith для достижения этой цели:

if 'yes'.startswith(choice.lower().strip()):
   print('You said "yes"!')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...