输入数字时出现Python错误

时间:2014-01-30 21:10:13

标签: python

我正在尝试用Python编写一个程序,告诉我一件事,如果输入的数字介于1和100之间。这是我到目前为止的代码:

number = int (raw_input ("give me a number."))

if number < 100 and number > 1:
    print ("Great! The number " + number + " is in fact between 1 and 100. I am happy " + number + " times")

if number < 1 or number < 100:
    print ("Not so great! The number " + number + " is not between 1 and 100.")

我可以运行第一位,但是一旦输入介于1和100之间的数字,我就会收到此错误:

Traceback (most recent call last):
  File "/Downloads/number (1).py", line 3, in <module>
    print "Great! " + number + " is in fact between 1 and 100"
TypeError: cannot concatenate 'str' and 'int' objects

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

您无法直接合并intstr。转换为字符串或使用字符串格式:

优选:

print ("Not so great! The number {} is not between 1 and 100.".format(number))

有一点已经弃用了,现在仍然坚持,但被认为是“老”:

print ("Not so great! The number %i is not between 1 and 100." % number)

最明确,最慢,最不喜欢和最糟糕的风格(感谢@Stefano Sanfilippo!):

print ("Not so great! The number " + str(number) + " is not between 1 and 100.")

如果你有"5" + 5,你想要什么?您想要10,还是想要"55"?由于含糊不清,提出错误并强迫您明确表达意图是更安全的

答案 1 :(得分:1)

您需要将'number'转换为字符串。您可以使用'str'函数将其包装起来。

答案 2 :(得分:1)

这应该有效:

print ("Great! The number "+str(number)+" is in fact between 1 and 100. I am happy " +str(number)+" times")

答案 3 :(得分:0)

您不能直接将字符串和整数一起添加。这样做会抛出TypeError

>>> 'a' + 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
>>>

相反,您可以使用str.format将整数插入字符串中:

print("Not so great! The number {0} is not between 1 and 100.".format(number))

此外,比较的逻辑是错误的。例如,这个if语句的条件:

if number > 1 or number < 100:

将始终评估为True,因为number 总是大于1或小于100


解决了这些问题后,您的代码应如下所示:

number = int(raw_input("give me a number."))

# You can chain comparisons
if 1 < number < 100:
    print("Great! The number {0} is in fact between 1 and 100. I am happy {0} times".format(number))
# You should use else here
else:
    print("Not so great! The number {0} is not between 1 and 100.".format(number))