我已经花了好几天了,但没有任何帮助。不管我做什么,minimal的值都不会改变。尽管使用几乎相同的代码行,但使用最大的值并不会发生这种情况。
smallest = None
largest = None
while True:
num = raw_input("Enter a number: ")
if num == "done":
break
try:
x = int(num)
if x < smallest:
smallest = x
elif x > largest:
largest = x
except:
print"Invalid input"
continue
print "Maximum is", largest
print "Minimum is", smallest
首先,(几乎)永远不要使用裸露的except
语句。您将捕获无法或不想处理的异常(例如SystemExit
)。至少要使用except Exception
。
其次,你的except
块意味着你只需要处理ValueError
的是int(num)
可能引起。抓住了,别无所求。
第三,比较的代码x
,以smallest
和largest
为独立的ValueError
处理,所以移动,走出的try
块后try/except
声明。
smallest = None
largest = None
num = "not done" # Initialize num to avoid an explicit break
while num != "done":
num = raw_input("Enter a number: ")
try:
x = int(num)
except:
print "Invalid input"
continue
if smallest is None:
smallest = x
if largest is None:
largest = x
if x < smallest:
smallest = x
elif x > largest:
largest = x
print "Maximum is", largest
print "Minimum is", smallest
请注意,您不能折叠的None
支票转换为if/elif
语句,因为如果用户只输入一个号码,你需要确保双方 smallest
并largest
设置为这个数字。输入第一个数字后,就不会出现单个数字会同时更新smallest
和的情况largest
,因此if/elif
是有效的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句