“无法将'int'对象转换为str隐式”bug还是什么?

时间:2013-02-21 22:16:23

标签: python python-3.x

我输入了这段代码,但我看不出它有什么问题。

if guess != number:
    number = str(number)
print('Nope. The number I was thinking of was ' + number)

它一直给我“无法将'int'对象隐式转换为str”,即使我将整数转换为字符串

请帮助这个菜鸟吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

>>> number='5'
>>> if raw_input('enter number:')!=number:
...    print('Nope. The number I was thinking of was {}'.format(number))

或者:

>>> number=5
>>> if int(raw_input('enter number:'))!=number:
...    print('Nope. The number I was thinking of was {}'.format(number))

使用format method,您不需要进行显式类型转换来打印它,因为您没有连接两个字符串。您需要确保在if语句中将字符串与字符串或int与int进行比较。

(如果您使用的是Python 3,raw_inputinput的功能相同......)

答案 1 :(得分:0)

您只需将print放在if区块内。

if guess != number:
    number = str(number)
    print('Nope. The number I was thinking of was ' + number)

在您的原始代码中,即使您猜对了,它也会打印出来,这意味着if块没有执行,因此number仍然是一个整数。

您还可以使用字符串格式来避免将number转换为字符串。

print('Nope. The number I was thinking of was %d' % number)

drewk提到了较新的字符串格式化方法。