Как поставить input внутрь функии
Не могу вызвать input() внутри функции. Я пыталась найти ответы в других источниках, но нашла только этот код
def example():
while True:
test4word = input("What's your name? ")
try:
test4num = int(input("From 1 to 7, how many hours do you play in your mobile?" ))
except ValueError:
print("Error! This is not a number. Try again.")
else:
print("Impressive, ", test4word, "! You spent", test4num*60, "minutes or", test4num*60*60, "seconds in your mobile!")
break
example()
Но при запуске выдает ошибку:
EOF when reading a line
Помогите решить проблему
Ответы (3 шт):
EOF расшифровывается End OF File - Конец файла
Код правильный, но возможно вы случайно прервали операцию клавишами ctrl + d или ctrl + c
Попробуйте добавить в код пару строчек
def example():
while True:
test4word = input("What's your name? ")
try:
test4num = int(input("From 1 to 7, how many hours do you play in your mobile?" ))
except ValueError:
print("Error! This is not a number. Try again.")
except EOFError:
print('Ну зачем вы сделали мне EOF?')
except KeyboardInterrupt:
print('\nВы отменили операцию.')
else:
print("Impressive, ", test4word, "! You spent", test4num*60, "minutes or", test4num*60*60, "seconds in your mobile!")
break
example()
Для меня ваш код работает правильно, нет никаких ошибок.
Ошибка в коде
EOF when reading a line
бы просто значила, что вы что-то начали - (, [, {, " или ', но не окончили — отсутствует ), ], }, " или '.
Но ваша проблема вероятно в другом:
Вы запускаете программу — никаких ошибок нету (в противоречии с тем, что вы в своем вопросе писали), но ваш цикл бесконечный, он хочет имя, имя, имя, ...
В отчаянии нажимаете что-то как Ctrl+D или Ctrl+Z и ваша программа кричит:
Я хотела читать строку от пользователя, а напала на конец файла.
Для стандартного ввода нажатие Ctrl+D (или Ctrl+Z — в зависимости от операционной системы и окружения) генерирует признак конца файла (EOF — end of file).
Как это обойти, в моем другом ответе.
Вы написали функцию, в которой бесконечный цикл с вызовом функции input():
def example():
while True:
test4word = input("What's your name? ")
# Продолжение функции ...
Когда вы вызовете эту функцию
example()
она будет бесконечно спрашивать имя (на английском).
Это не хорошо — надо дать пользователю возможность каким-то образом сказать, что хватит, он уже не хочет отвечать. Например так:
def example():
while True:
test4word = input("What's your name? ")
if not test4word: # когда test4word пустым,
break # выход из цикла «while True:»
# Продолжение функции ...
Когда пользователь ничего не написал, только он нажал на клавишу Enter, бесконечный цикл прерывается.