• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Проверка на ввод числа в заполнении словаря Python

puffffik

New member
03.04.2022
3
0
BIT
0
Как проверить вводится ли число при заполнении словаря вводимыми данными? я уже накидал вариант и он вроде как выполняет задуманную функцию, но он повторно запрашивает вводить данные. мб есть у кого идея как его заставить вводить данные один раз без повторов?
Python:
def jitel_check(jit):
    jiteli = {}
    try:
        for i in range(int(jit)):
            lenght = int(input("Сколько заработал кубков житель " + str(i + 1) + ": "))
            jiteli["Житель " + str(i + 1)] = lenght
        return jiteli
    except ValueError:
        print("Нужно ввести число")
        return jitel_check(jit)
jitel_check(jit)
print(jitel_check(jit))
Консоль:
Снимок экрана 2022-04-03 030224.png
 

DragonFly

Green Team
01.06.2020
222
65
BIT
6
Код:
jitel_check(jit)
print(jitel_check(jit))
так ты дважды функцию вызываешь или я что-то не правильно понял?
 

puffffik

New member
03.04.2022
3
0
BIT
0
Нашел решение методом тыка:
Python:
@bot.message_handler(content_types=["text"])
def vvod_jit(message):
    global jit_dan
    jit_dan = message.text
    bot.send_message(message.from_user.id, "Количество жителей: ")
    bot.register_next_step_handler(message, jit)

def jit(message):
    if message.text.isdigit():
        return vvod_jitel(message)
    else:
        return nechislojit(message)
def nechislojit(message):
    bot.send_message(message.from_user.id, "Нужно ввести число")
    return vvod_jit(message)
Решение для модуля telebot, но можно и под консоль заполнить
Было ещё решение через консоль. Если кому интересно могу отправить
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!