Задача для новичка. Вывести объект из списка

Необходимо: Существует список. Вывести объект из списка при вводе его индекса (input). Если в списке 5 человек, а вводят цифру 6, программа должна сказать «всего в списке 5 человек. Введите номер от 0 – 4». Если вводится буква, программа говорит: «Введите цифру!». И так по кругу.

b = ['Маша', 'Ваня', 'Лена', 'Марина', 'Арнольд']
c = len(b)
dd = c - 1
while True:
    def x():
        while True:
            try:
                x = int(input('Введите номер учатника: '))
                if x > c:
                    print('В списке всего ' + c + ' человек. Введите номер от 0 до ' + dd +'!')
                else:
                    return x
            except ValueError:
                print('Введите число!')
    print(b[x])

Выдает ошибку. Но, в силу неопытности, не могу понять что именно не так.


Ответы (1 шт):

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

break останавливает(ломает) цикл и идёт дальше по ходу вывод человека лучше перенести в блок else так как так будет понятнее, ибо если x входит в диапазон длины b то мы выводим имя человека

b = ['Маша', 'Ваня', 'Лена', 'Марина', 'Арнольд']
c = len(b) 
while True:
    try:
        x = int(input('Введите номер учатника: '))
        if x > c:
            print('В списке всего ' + str(c-1) + ' человек. Введите номер от 0 до ' + str(c) +'!')
        else:
            print(b[x-1])
            break
    except ValueError:
        print('Введите число!')
→ Ссылка