python类型错误字符串和非类型

时间:2015-10-26 18:54:45

标签: python

我正在编写一个程序使用两个非类型,其中一个我得到一个错误。这是程序:

largest = None
smallest =None
while True:
    num = raw_input("Enter a number larger than 0: ")

    if num == "done" :      
        break

    try:
        float(num)
    except:
        print 'Invalid input'
        continue

    if num < 0:
        print'number is smaller than 0'
        continue
    if num > largest:
        largest = num 
    elif num < smallest:
        smallest = num     
    else:
        continue            

str(largest)
str(smallest)
print ('Maximum is '+ largest)
print ('Minimum is '+ smallest)

我总是得到:

TypeError: cannot concatenate 'str' and 'NoneType' objects on line 23.

答案可能很简单,但我只是一个12岁的初学者。请帮帮我。

4 个答案:

答案 0 :(得分:1)

问题在于,当您比较num > largest时,您最初会比较num > None,这将是错误的。您还将num < None与最小值进行比较,这也是错误的。因此,当您使用'Maximum is '+ largest将其附加到字符串的末尾时,您尝试附加None对象,该对象不能连接到字符串。

要解决此问题,您必须将if检查更改为

if (largest is None) or (num > largest):

等。

然后当你打印它们时,你可以'Maximum is '+ str(largest)将数字转换成可以与其他字符串连接的字符串表示。

答案 1 :(得分:0)

一开始,largest应该是0,而不是None。此外,smallest应该是一个非常庞大的数字,而不是None

您需要将str(largest)分配给变量,即

largest = str(largest)
smallest = str(smallest)

答案 2 :(得分:0)

代码中的一些问题 -

  1. str() / float()不是就地函数,它们返回转换后的对象,您需要将其分配回numlargest / smallest

  2. 在Python 2.x中,None总是小于任何整数,因此smallest始终为None,您应该使用float('inf')而不是None {1}} smallestfloat('-inf') largest {1}}。示例 -

    largest = float('-inf')
    smallest = float('inf')
    

答案 3 :(得分:0)

首先,您不必将您可以使用的数字转换为字符串,如下所示:

print“Maximum is%r”%minimum

但它可能会解决你的问题,但是这个程序不起作用,因为你想要比较多个数字(“我认为”)你必须存储在一个数组中,但我建议你关注this web site如果你是新的:D