我正在编写一个程序使用两个非类型,其中一个我得到一个错误。这是程序:
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岁的初学者。请帮帮我。
答案 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)
代码中的一些问题 -
str()
/ float()
不是就地函数,它们返回转换后的对象,您需要将其分配回num
或largest
/ smallest
。
在Python 2.x中,None
总是小于任何整数,因此smallest
始终为None
,您应该使用float('inf')
而不是None
{1}} smallest
和float('-inf')
largest
{1}}。示例 -
largest = float('-inf')
smallest = float('inf')
答案 3 :(得分:0)
首先,您不必将您可以使用的数字转换为字符串,如下所示:
print“Maximum is%r”%minimum
但它可能会解决你的问题,但是这个程序不起作用,因为你想要比较多个数字(“我认为”)你必须存储在一个数组中,但我建议你关注this web site如果你是新的:D