首页 > 解决方案 > 有没有办法从错误发生的地方继续而不是重复?

问题描述

我有这个循环

for i in range(branches):
    count += 1
    while True:
        try:
            computer = int(input('{} {} :'.format("Enter number of books for computer of branch", count)))
            bookCount.append(computer)
            physics = int(input('{} {} :'.format("Enter number of books for phsyics of branch", count)))
            bookCount.append(physics)
            chemistry = int(input('{} {} :'.format("Enter number of books for chemistry of branch", count)))
            bookCount.append(chemistry)
            biology = int(input('{} {} :'.format("Enter number of books for biology of branch", count)))
            bookCount.append(biology)
            arts = int(input('{} {} :'.format("Enter number of books for arts of branch", count)))
            bookCount.append(arts)
        except ValueError:
            print("Input must be a number")
            continue
        if computer < 1:
            print("Number must be at least 1")
        else:
            break

如果我输入说“Hello”而不是 int,try except 将捕获问题并打印错误,但将从 try 循环的顶部重新启动。有没有办法从错误发生的地方继续,或者他们都需要分开?

编辑::::

我现在尝试了几种格式化它的方法,例如下面,但它总是回到顶部输入

for i in range(branches):
    count += 1
    while True:
        try:
            computer = int(input('{} {} :'.format("Enter number of books for computer of branch", count)))
            bookCount.append(computer)
            try:
                physics = int(input('{} {} :'.format("Enter number of books for physics of branch", count)))
                bookCount.append(physics)
            except ValueError:
                print("Input must be a number:")
                continue
        except ValueError:
            print("Input must be a number")
            continue
        if computer < 1:
            print("Number must be at least 1")
        else:
            break

任何帮助都会很棒

标签: pythonfor-loopwhile-looptry-catchvalueerror

解决方案


您需要在 try 块中只有一个输入才能执行您想要的操作。实现这一点的最佳方法是使用函数:

def get_input(request_string, count):
    
    while True:
        try:
            value = int(input('{} {} :'.format(request_string, count)))
        except ValueError:
            print("Input must be a number")
            continue

        if value < 1:
            print("Number must be at least 1")
        else:
            return value 

for count in range(branches):
    
    bookcount.append(get_input("Enter number of books for computer of branch", count))
    bookcount.append(get_input("Enter number of books for phsyics of branch", count))
    ...

推荐阅读