我正在尝试创建一个python3.3程序(使用Windows 10和记事本和命令行),它接受一个用户输入数字,并在每次输出数字不是1时输出一个新数字,并改变数字对于偶数,只使用2除以3乘以奇数加1。
def collatz():
if collatz() == ' ': #if collatz() doesn't have a return value yet
number = input('Please Enter A Number. ')
number = int(number)
if number % 2 == 0:
number = number // 2
return number
else:
number = 3*number + 1
return number
while number > 1:
collatz()
我移动了一堆东西,我已经让它在循环中重复第一个操作,我已经得到它只给我一个数字,然后提示更多的用户输入?有人可以告诉我如何
答案 0 :(得分:0)
你似乎拥有大部分但不完整的顺序。我猜你想要更像的东西:
def collatz(number):
if number % 2 == 0:
number = number // 2
else:
number = 3 * number + 1
return number
my_number = int(input('Please Enter A Number: '))
print(my_number)
while my_number > 1:
my_number = collatz(my_number)
print(my_number)
答案 1 :(得分:0)
你需要的是一个函数collatz()
,它接受一个数字作为它的参数,并在1次迭代后返回一个不同的数字。您通常不希望在函数内使用input()
,因为该函数不再可重用。
请考虑以下代码:
def func(var):
print(var)
func(45)
它输出数字45,因为整数45被传递到函数func()
,然后可以被func()
内的命令使用。当func()
完成时它就不复存在了。您可能希望以类似的方式将整数传递到collatz()
函数中。
以下代码段演示了如何使用return
关键字:
def func():
return 5
var = func()
print(var)
此代码将打印数字5,因为func()
返回5,并保存到var
。
您将希望在代码中使用这两种技术,以便从函数外部的用户那里获取输入,然后继续在数字上调用collatz()
,并将其输出传递给它下一次迭代,直到输出1。
我还没有为你写完整的代码;你应该能够自己做,但如果你正在努力,请告诉我。