python - 如何在循环中使用 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)
例如,当使用这个输入列表时1
:2
; alex
; 9
; 并且7
,这是我得到的输出:
Maximum is Alex
Minimum is 1
解决方案
这应该有效,除非您实际上从未将输入转换为int
. 我相信 from 的返回值input
将始终是一个字符串。这并不意味着它不能转换为 an int
,但它首先是字符串"42"
而不是 int 42
。我会尝试:
而不是isinstance(num,int) == True
做int_input = int(num)
。如果 num 不是类似 int 的输入,则如果这不起作用,您的 try/catch 将捕获。请注意,您的原始isinstance()
调用永远不会引发异常,它只会评估为True
or 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)
推荐阅读
- python - 我想列出 NSE 指数中的公司
- r - 如何从 R 中的 animate 函数中保存 GIF 图像?
- excel - 运行 vba 代码后的输出被删除,不是每次而是每次交替时间
- git - 如何以用户而非管理员身份访问 git
- vue.js - 有没有办法从特定文件夹导入全局组件列表?
- c# - 级联阴影贴图 - 正交投影问题
- concurrency - Jenkins - 每个节点/代理使用并行阶段运行并发构建
- php - Wordpress:如何从 print_r($object) 中获取数组值
- javascript - 如果 URL 包含 VALUE 添加类到链接 + ROOT
- javascript - 打开模式窗口时如何向地址添加锚点?