2012-11-30 80 views
0

我已经编写了一个Python函数randomizer(),它随机化文件中的行,然后将它们写入std输出。它本身就没有问题。现在,我希望能够遍历这个过程的时候,用户自定义数字,所以我写:Python:在while循环中调用函数导致失控递归

def iterator(): 
    print("Number of iterations: ") 
    total_iterations = raw_input() 
    current_iteration = 1 
    while current_iteration <= total_iterations: 
     randomizer() 
     current_iteration = current_iteration + 1 

如果我这样做,randomizer()只是不断重复自己,直到我手动终止它。但是,如果while循环是

while current_iteration <= total_iterations: 
    random.shuffle(listname) 
    current_iteration = current_iteration + 1 

然后iterator()在指定的运行次数后停止。如果我在iterator()的while循环内写入randomizer()的整个代码,则会出现同样的问题。这告诉我,在while循环中调用一个函数时有问题,但我无法弄清楚什么。

+1

这应该给你一个错误,除非额外的缩进是一个错字。 – asheeshr

+0

是的,额外缩进是一个错误(现在纠正),但不是在我的代码上。 – Koldito

+1

第二个版本真的有用吗?问题是'raw_input()'的结果是一个字符串,而不是一个int,所以这个条件永远不会终止。 –

回答

1

问题是raw_input()返回一个字符串,所以比较while current_iteration <= total_iterations总是返回true。

修复通过转换成一个int

total_iterations = int(raw_input())