我现在正在学习如何用python编程,我正在学习的那本书给了我一个实践项目来构建这个序列,并将它放在一个循环中,直到值为1。你知道吗
我的代码如下所示:
print('Enter a number')
number = input()
num = number
def collatz(number):
global num
if int(num) % 2 == 0:
num = int(num) // 2
print(str(num))
elif int(num) % 2 == 1:
num = 3 * int(num) + 1
print(str(num))
while num != 1:
number = num
collatz(number)
它起作用了,但我不确定我是否按我应该的方式做了。 我的问题是,我同时使用number作为全局变量和参数,当我第一次编写代码时,每个'num'都被称为'number',当第一次测试它时,它将进入一个无休止的循环,并再次重复第一个if或elif。我想问题是它没有引用全局变量,而是创建了一个局部变量,所以我在一开始就尝试声明使用全局变量,正如您所看到的,但是它不允许我使用全局变量,因为全局变量和参数不能相同,所以我创建了'num'变量并将其赋给if块,但现在看来,number参数并没有真正干扰我的代码。你知道吗
事实上,它的工作使我高兴,但我想确认这是正确的。你知道吗
有几件事我建议你解决。你知道吗
对于
input
,不需要单独的print
。也可以现在将其转换为int。你知道吗number = int(input('Enter a number'))
摆脱全球化,使用
return
。也要摆脱你的角色塑造。请参见:
如此组合:
相关问题 更多 >
编程相关推荐