我目前正在尝试从一本书中学习Python,但我遇到了一个问题。基本上我应该编写一个程序来做一些叫做Collatz序列的程序。代码如下:
print("Please enter a number")
number = input()
int(number)
while number > 1:
collatz()
def collatz(number):
if number % 2 == 0:
number = number // 2
print(number)
return number
else:
number = 3 * number + 1
print(number)
return number
因此,当我尝试执行上面的代码时,我得到以下输出:
RESTART:C:/Users/Gillian/AppData/Local/Programs/Python/Python35-32/Collatz.py
请输入一个数字
12个
Traceback(最近一次调用最后一次): 文件“C:/Users/Gillian/AppData/Local/Programs/Python/Python35-32/Collatz.py”,第6行,中
而数字> 1:
TypeError:unorderable类型:str()> INT() 块引用
显然,当我的变量应该是一个整数时,它被读作一个字符串。我的问题是 - 为什么?我认为第4行的部分,我将数字的数据类型更改为int应该修复它,但它没有。
我想要完成的内容的说明,如果对我的问题很重要,请在页面底部here。
答案 0 :(得分:1)
执行int(number)
后,您必须再次将其分配给number
:
number = int(number)
这是因为int(number)
本身并没有改变number
,它只是返回它转换为整数类型的版本。
您还可以通过将输入和转换合并为一个来简化代码:
number = int(raw_input("Please enter a number"))
在Python 2.7中。在Python 3中,将raw_input
替换为input
。