Сравнение строк в трудностях Python 3.2 - PullRequest
1 голос
/ 08 января 2012

У меня есть следующее

if('y' == input("Enter y to continue")):
    # do something

Но это не работает, независимо от того, что я печатаю?

Ответы [ 5 ]

3 голосов
/ 08 января 2012

Это известная ошибка в Windows, вы можете определить ее, выполнив print(repr(input("put y: "))

Попробуйте это

input("put y:").strip().lower() == "y"
3 голосов
/ 08 января 2012

Я не могу воспроизвести это здесь:

>>> if('y' == input("Enter y to continue: ")):
...    print("Yeah!")
...
Enter y to continue: y
Yeah!
>>>

Но я бы все равно сделал по-другому:

answer = input("Enter y to continue: ")
if answer.lower().startswith("y"):
   print("Yeah!")

также обрабатывает Y, Yes!, yes, please... и т. Д. Правильно.

2 голосов
/ 08 января 2012

Хорошо работает на 3.2.1 в Windows 7 x64:

>>> if input("Enter y to continue") == 'y': print("ok")
Enter y to continuey
ok

(«continuey» правильно, это просто «continue» + мой «y» ввод.)

1 голос
/ 30 июля 2015

Я только что столкнулся с этой проблемой, вот как я решил ее (Python 3.4.1):

i = input ('Enter y to continue: ')
validity = i == 'y'

if validity == True:
    #do something

Используя булев тип, чтобы определить, был ли ввод равен y, вы избегаете ошибки, это также чрезвычайно просто.

0 голосов
/ 08 января 2012

использовать if input("Enter y to continue").lower().startswith('y'):.

...