Как через try/except определить что строка не содержит цифры?
Всем привет. Придумал(ну почти) себе задачу: пользователь вводит разные слова через пробел, нужно найти и вывести самое длинное слово и количество букв. Потом встал вопрос, а как можно через try/except ограничить ввод, чтобы если пользователь ввел цифры или цифру с буквой, то программа ему об этом сообщила и попросила исправить. Если бы наоборот нужно было вводить только цифры, это легко проверить ну к примеру вот так:
try:
int(input('Введите число: '))
except ValueError:
print('Только число')
А вот с буквами возникли сложности. Будьте добры подскажите возможно ли проверить через try/except моё условие или может есть другие способы? Вот сам код задачи.
a = input('Введите любые слова через пробел: ').split()
max_length = 0
word = 'tmp'
for i in a:
if len(i) > max_length:
max_length = len(i)
word = i
print(f'Самое длинное слово из введённых: {word}, его длина равна {max_length}')
Ответы (1 шт):
Для проверки, что на вводе находится целочисленное значение, не нужно использовать try-except. Примените метод .isdecimal(), например:
while True:
number = input('Введите число: ').strip()
if not number.isdecimal():
print("Неправильный ввод. Ожидается число.")
continue
else:
number = int(number)
break
Подобным образом вы можете это сделать для проверки, если на вводе списка слов не находятся цифры. Только вместо проверки
if not number.isdecimal():
примените например
import string
for s in word_list:
if s in string.digits:
Весь цикл для списка слов:
import string
while True:
word_list = input('Введите слова через пробел: ').strip()
for s in word_list:
if s in string.digits:
print("Неправильный ввод (цифра в нем).")
break
continue
else:
break;
# Правильный ввод, продолжаем...
Объяснение:
string.digitsто же самое как строка"0123456789".Первый
break: для циклаfor– когда уже плохо, не надо дальше проверять (не будет лучше).continue: тоже для циклаfor– когда еще не плохо, в будущем может быть.Второй
break: для циклаwhile– всё в порядке, правильный ввод, не надо уже пользователя спрашивать.