我正在尝试创建一个程序,根据下面的算法,给我一个给定数字的最少可能的移动次数,但我似乎没有得到任何地方,因为似乎有一个无限循环的地方,我猜这是我的函数,因为我才刚刚开始使用它们
如果有人能解释我做错了什么,我将不胜感激
这是我的密码:
num = 4
x = 0
def div3(num):
n3 = num / 3
n3 = n3 + n3
num = num - n3
print("DIV3")
return num
def div2(num):
num = num / 2
print("DIV2")
return num
def min1(num):
num = num - 1
print("MIN1")
return num
while num != 0:
if num / 3 % 1 == 0:
div3(num)
x = x + 1
print(x)
elif num / 2 % 1 == 0:
div2(num)
x = x + 1
print(x)
else:
min1(num)
x = x + 1
print(x)
print(x)
我不确定这段代码应该做什么,但是像这样的表达式没有什么意义:
一个整数除以整数3总是得到一个整数,任何整数模1总是零。你知道吗
也许你是这个意思?你知道吗
而且,外部
num
变量永远不会改变。也许你想做这样的事:我建议您也将外部代码放在函数中。这将有助于澄清外部
num
与div()
函数内部的num
不同。所以你的程序会有这样的结构:首先,num不能在函数内部更改,因为num的作用域对于函数是局部的,所以将其设置为全局的,并将函数的参数更改为其他变量,例如“value”,否则局部变量和全局变量将发生冲突。样品更换
接下来修复循环的问题,循环将在第一次迭代后转到无限循环。当num=2时,循环将变为无穷大,因为
num = value - n3
总是给出2,所以它继续执行函数DIV3相关问题 更多 >
编程相关推荐