函数似乎导致无限循环?

时间:2016-01-08 04:35:52

标签: python function loops

我正在尝试创建一个程序,根据以下算法给出我任意给定数量的最少可能移动的数量,但我似乎没有得到任何地方,因为在某处似乎有无限循环而且我&#39我猜它是我的功能,因为我刚刚开始使用它们

如果有人能解释我做错了什么,我们将不胜感激

这是我的代码:

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)

2 个答案:

答案 0 :(得分:1)

我不确定这段代码应该做什么,但像这样的表达式没有多大意义:

# Makefile.ac for libtestA
lib_LTLIBRARIES = libtestA.la
libtestA_la_SOURCES = Src files

libtestA_la_CPPFLAGS= -I@top_srcdir@/src/test/include (here header files from libs)

libtestA_la_LDFLAGS = 

libtestA_la_LIBADD =   -lpthread \
                ../libtestB/libtestB.la

# Makefile.ac for my_app
bin_PROGRAMS = my_app
my_app_SOURCES = my_app.cpp
my_app_CPPFLAGS = -I@top_srcdir@/src/test/include
my_app_LDADD = ../libtestA/libtestA.la

EXTRA_DIST = 

# build app command
/bin/bash ../../../libtool --silent --tag=CXX --mode=link g++ -g -O0 -frtti -fexceptions -L/usr/local/lib -o my_app my_app-my_app.o -lexpat -ldl -lpthread -lcrypto ../libtestA/libtestA.la

int除以int 3总是给出一个int,而任何int modulo 1总是为零。

也许你是这个意思?

num / 3 % 1

此外,外部(num / 3.0) % 1 # Also adding parens for clarity. 变量永远不会改变。也许你打算做这样的事情:

num

我建议您将外部代码放在函数中。这有助于澄清外部num = div3(num) num函数中的num不同。所以你的程序会有这样的结构:

div()

答案 1 :(得分:0)

def div3(num):
n3 = num / 3
n3 = n3 + n3
num = num - n3
print("DIV3")
return num

首先,num不能在函数内部进行更改,因为num的作用域是函数的局部,所以将它作为全局函数并将函数的参数更改为其他变量说&#3​​4; value&# 34;否则本地和全局变量将发生冲突。样品更改

def div3(value):
n3 = value / 3
n3 = n3 + n3
global num
num = value - n3
print("DIV3")
return num

接下来修复循环问题,循环将在第一次迭代后进入无限循环。当num = 2时,循环将变为无穷大,因为num = value - n3总是给出2,所以它继续执行函数DIV3