我正在尝试编写这个程序,它要求输入数字,并将最小和最大的变量存储在两个变量中,这些变量在开头都是None。
不知何故,最大的数字按我的意愿存储,但最小的数字永远不会存在。
这是我的代码:
largest = None
smallest = None
while True:
inp = raw_input("Enter a number: ")
if inp == "done" : break
try :
num = int(inp)
except :
print "Invalid input"
continue
if num == None or num < smallest :
num = smallest
if num == None or num > largest :
num = largest
print "Maximum is", largest
print "Minimum is", smallest
只要输入一些数字并以“完成”结束程序,输出就像这样:
Maximum is 56
Minimum is None
我检查了几次缩进。
答案 0 :(得分:2)
你的意思是:
if smallest is None or num < smallest :
smallest = num
if largest is None or num > largest :
largest = num
而不是:
if num == None or num < smallest :
num = smallest
if num == None or num > largest :
num = largest
因为您发布的代码中smallest
和largest
中没有任何内容存储,而且@MartijnPieters None
指向总是小于,而不是python中的数字2.
您可以查看此链接:Is everything greater than None?以获取有关该主题的更多信息。
另外,我更喜欢在你的情况下使用明确的except
,例如except ValueError:
,而不是抓住所有东西。
答案 1 :(得分:0)
从不分配最大和最小。
本着写蟒蛇的精神,你可以使用 min 和 max :)
答案 2 :(得分:0)
largest = None
smallest = None
a=[]
while True:
inp = raw_input("Enter a number: ")
if inp == "done" : break
try :
num = int(inp)
a.append(num)
except :
print "Invalid input"
continue
smallest=a[0]
for x in a:
if x<smallest:
smallest=x
largest=max(a)
print "Maximum is", largest
print "Minimum is", smallest
您可以使用smallest=min(a)
答案 3 :(得分:0)
@ d6bels答案是正确的,但您需要添加:
if smallest == None:
smallest = num
if largest == None:
largest = num
所有代码都已应用:
largest = None
smallest = None
a=[]
while True:
inp = raw_input("Enter a number: ")
if inp == "done": break
try:
num = int(inp)
a.append(num)
except:
print("Invalid input")#For the sake of 2.x-3.x compatability, format your
if smallest == None: #prints as a function
smallest = num
if largest == None:
largest = num
smallest=a[0]
for x in a:
if x<smallest:
smallest=x
largest=max(a)
print("Maximum is " + str(largest))
print("Minimum is " + str(smallest))