#python #console-application
#python #консольное приложение
Вопрос:
Я пишу этот простой фрагмент кода (Python 3.2 на Win32):
def main():
decision = input('¿Send mail? (y/n): ')
if decision == "y":
sender()
print("Mail sent.")
else:
print("Cancelled.")
input()
def sender():
print("In sender ... ")
pass
main()
и это работает, как ожидалось, в режиме ожидания, но в консоли Windows неожиданно говорится «отменено», когда вы выбираете «y».
Теперь это не имеет для меня никакого смысла, не могли бы вы, пожалуйста, помочь мне понять, что не так?
Комментарии:
1. Чтобы это имело больше смысла, выведите входные данные в консоль перед
if
инструкцией. Вот такprint("'", decision, "'", sep="")
. Это может помочь.2. Работает для меня на Python 2.5.4 с использованием decision = raw_input(‘y / n’)
3. Do
print(repr(decision))
это короче и показывает вам именно то, что вы ввели.4. Может ли быть так, что из командной строки Windows или idle (один, но не другой) вы используете символ, который похож на ‘y’, но не является таковым? что, если вы используете байтовые строки вместо unicode?
Ответ №1:
Я предлагаю вам прочитать определение input()
. Не рекомендуется для обычного пользовательского ввода, поскольку он ожидает синтаксически корректный код Python и eval()
использует его.