返回意外值

时间:2015-03-06 16:33:19

标签: python if-statement try-except

我为我正在进行的在线课程编写了此代码,您无法发布代码并在那里获得具体帮助。我希望有人在这里提供帮助。 代码 -

largest = None
smallest = None
numI = 0
while True:
    num = raw_input("Prompt you")
    if num == "done":
        break
    try:
        numI = int(num)
    except:
        print "Invalid input"
        continue
    if numI >= largest or numI < smallest:
        if numI > largest:
            largest = numI
        else:
            smallest = numI 

print "Maximum is",largest
print "Minimum is",smallest

为什么返回“Minimum is None”? 我尝试了两个If循环,一个If和Elif,现在这个嵌套循环。无论我似乎达不到设定的最小值。

任何帮助非常感谢。

(代码已上交并评级,因此您无法破坏该部分:))

2 个答案:

答案 0 :(得分:4)

x&lt;没有人总是返回false,所以在While True:语句中你需要添加

if largest==None:
    largest=numI
if smallest==None:
    smallest=numI

代码:

largest = None
smallest = None
numI = 0
while True:
    num = raw_input("Prompt you")
    if num == "done":
        break
    try:
        numI = int(num)
    except:
        print "Invalid input"
        continue
    if largest==None:
        largest=numI
    if smallest==None:
        smallest=numI
    if numI > largest or numI < smallest:
        if numI > largest:
            largest = numI
        else:
            smallest = numI 

print "Maximum is",largest
print "Minimum is",smallest

注意使用print('Maximum is ' + str(largest))是一种很好的做法,因为它与3.4

交叉兼容

答案 1 :(得分:1)

在python 2中,None少于一切。所以你的numI < smallest条件永远不会通过。您应该显式测试None,以便numI设置为初始传递中的第一个值,然后它可以正常更新。

此外,您应该使用两个独立的检查:

if largest is None or numI > largest:
    largest = numI
if smallest is None or numI < smallest:
    smallest = numI