首页 > 解决方案 > 如何在循环中使用 continue 语句?

问题描述

这是一个代码,它从用户那里获取一个数字列表并计算最小和最大,直到他输入“完成”。每当用户输入无效输入时,都应跳过此迭代。我continue在循环中使用它来执行此操作,但它没有按我预期的那样工作。

largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done" : break
    try:
        isinstance(num,int) == True
    except:
        print('Invalid input')
        continue
    if largest is None :
        largest = num
    elif num > largest :
        largest = num
    if smallest is None :
        smallest = num
    elif num < smallest :
        smallest = num
print("Maximum is", largest)
print("Minimum is", smallest)

例如,当使用这个输入列表时12; alex; 9; 并且7,这是我得到的输出:

Maximum is Alex
Minimum is 1

标签: python

解决方案


这应该有效,除非您实际上从未将输入转换为int. 我相信 from 的返回值input将始终是一个字符串。这并不意味着它不能转换为 an int,但它首先是字符串"42"而不是 int 42。我会尝试:

而不是isinstance(num,int) == Trueint_input = int(num)。如果 num 不是类似 int 的输入,则如果这不起作用,您的 try/catch 将捕获。请注意,您的原始isinstance()调用永远不会引发异常,它只会评估为Trueor False,因此它将始终继续进行,这就是您得到奇怪结果的原因。您的 continue 现在位于正确的位置。然后在其余代码中使用int_input而不是num,因为您需要处理 int,而不是字符串输入。

这是一个例子:

largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done":
        break
    try:
        int_input = int(num)
    except:
        print('Invalid input')
        continue
    if largest is None :
        largest = int_input
    elif int_input > largest :
        largest = int_input
    if smallest is None :
        smallest = int_input
    elif int_input < smallest :
        smallest = int_input
print("Maximum is", largest)
print("Minimum is", smallest)

推荐阅读