Как через 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 шт):

Автор решения: MarianD

Для проверки, что на вводе находится целочисленное значение, не нужно использовать 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;

# Правильный ввод, продолжаем... 

Объяснение:

  1. string.digits то же самое как строка "0123456789".

  2. Первый break: для цикла for – когда уже плохо, не надо дальше проверять (не будет лучше).

  3. continue: тоже для цикла for – когда еще не плохо, в будущем может быть.

  4. Второй break: для цикла while – всё в порядке, правильный ввод, не надо уже пользователя спрашивать.

→ Ссылка