Если вы используете Python 3.X, input()
всегда возвращает строку. Обратите внимание, что есть строки, такие как "1"
, которые все еще являются строками, несмотря на то, что они очень похожи на числа.
Я думаю, что вы на самом деле хотите, чтобы убедиться, что строка содержит только алфавитные символы, в этом случае вы можете сделать:
s = input("Enter your name: ")
if not s.isalpha():
print("Please enter only alphabetical characters for your name.")
Или, возможно, вы хотите принять все строки, кроме тех, которые состоят исключительно из цифр.
s = input("Enter your name: ")
if s.isdigit():
print("Your name cannot be a number.")
Или вы хотите принимать только те строки, которые вообще не содержат цифр?
s = input("Enter your name: ")
if any(char.isdigit() for char in s):
print("Please do not include digits in your name.")
Если вы используете Python 2.7 или ниже, input()
может вернуть строку, целое число или объект любого другого типа. Как правило, это больше головная боль, чем стоит, поэтому я рекомендую переключиться на raw_input()
, после чего применимы все приведенные выше рекомендации.
Как только вы получите правильную логику для ваших условий проверки, вы можете подумать: «Хорошо, но как мне заставить программу вернуться к первому вызову input()
, чтобы у пользователя был еще один шанс ввести правильный ввод? ?». Если это так, вы можете найти это полезным: Запрашивать у пользователя ввод, пока он не даст правильный ответ
PS. Когда дело доходит до имен, будьте осторожны с тем, насколько строго вы проверяете ввод. Ошибка на стороне принятия необычных входов. В противном случае вы можете получить жалобы от людей с такими именами, как «Джон Смит 3-й» или «Стив О'Рейли» или «田中 太郎». Связанное чтение: Ложные программисты верят в имена