Можно ли через некоторое время l-1000 * ValueError вернуться к определенной c части? - PullRequest
0 голосов
/ 07 апреля 2020

Название не слишком ясно, я понял. У меня есть следующий код:

ore_types = ["Gold", "Mithril", "Adamantite", "Runite"]
def get_ore_amounts():
    ore_amounts = []
    while 1:
        try:
            for ore_type in ore_types:
                ore_amounts.append(int(input("How much " + ore_type + " do you have? ")))
        except ValueError:
            print("It has to be a rounded number, dumbass")
        else: 
            return ore_amounts

Если ввод неправильный, он сбрасывается до вопроса «Сколько у вас золота?». Я бы предпочел, чтобы он заново задал последний вопрос (Mithil, Adamantite, Runite). Есть ли простой способ сделать это, или я должен анализировать текущий код?

1 Ответ

0 голосов
/ 07 апреля 2020

Попробуйте это:

ore_types = ["Gold", "Mithril", "Adamantite", "Runite"]
def get_ore_amounts():
    ore_amounts = []
    for ore_type in ore_types:
        while True:
            try:
                value = int(input("How much " + ore_type + " do you have? "))
                break
            except ValueError:
                print("It has to be a rounded number, dumbass")
        ore_amounts.append(value)
    return ore_amounts

Это будет l oop бесконечно с тем же входным сообщением, если входное значение не будет правильным.

...