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

  • Бесплатный ВЕБИНАР по OSINT с Екатериной Тьюринг: ➡️9 февраля в 19:00 (мск) пройдет урок

    Как безопасно искать информацию в открытых источниках

    🔥 Записаться 🔥

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

  • Автор темы Автор темы puffffik
  • Дата начала Дата начала

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
 
Код:
jitel_check(jit)
print(jitel_check(jit))
так ты дважды функцию вызываешь или я что-то не правильно понял?
 
Нашел решение методом тыка:
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, но можно и под консоль заполнить
Было ещё решение через консоль. Если кому интересно могу отправить
 
Мы в соцсетях:

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