PYTHON:无法在变量中存储值,保持无

时间:2015-03-03 15:42:31

标签: python

我正在尝试编写这个程序,它要求输入数字,并将最小和最大的变量存储在两个变量中,这些变量在开头都是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

我检查了几次缩进。

4 个答案:

答案 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

因为您发布的代码中smallestlargest中没有任何内容存储,而且@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)

替换for循环

答案 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))