[英]How to use continue statement in a loop?
这是一个从用户那里获取数字列表并计算最小和最大的代码,直到他输入“完成”。 每当用户输入无效输入时,都应跳过此迭代。 我在循环中使用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)
例如,当使用这个输入列表时: 1
; 2
; alex
; 9
; 和7
,这是我得到的 output :
Maximum is Alex
Minimum is 1
这应该有效,除非您实际上从未将输入转换为int
。 我相信input
的返回值将始终是一个字符串。 这并不意味着它不能转换为int
,但它最初将是字符串"42"
而不是 int 42
。 我会尝试:
而不是isinstance(num,int) == True
做int_input = int(num)
。 如果 num 不是类似 int 的输入,则如果这不起作用,您的 try/catch 将捕获。 请注意,您最初的isinstance()
调用永远不会引发异常,它只会评估为True
或False
,因此它将始终继续进行,这就是您得到奇怪结果的原因。 您的 continue 现在位于正确的位置。 然后对代码的 rest 使用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)
首先,语句isinstance(num, int) == True
检查num
是否为 integer,然后丢弃答案。 它实际上永远不会导致错误(除非isinstance
function 本身有内部错误)。
您可能想要使用if
语句:
if not isinstance(num, int):
print('Invalid input')
continue
其次,正如其他人所指出的, input()
function 将始终返回一个字符串; 当你给程序1
; 2
; alex
; 9
; 和7
,它找到了按字母顺序排列的最大值和最小值——或者,更确切地说,是字母顺序的计算机变体,其中数字在字母之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.