Python计数器混淆while循环

时间:2017-03-23 23:51:22

标签: python function while-loop counter

import random, string

goal='methinks it is like a weasel'

def simulation(length):
   return ''.join(random.choice('abcdefghijklmnopqrstuvwxyz ') for i in range(length))

def score(stri):
    if stri==goal:
        print(100)
    else:
        print(0)

n=0
stri='abcd'
while score(stri) != 100:
      n += 1
      stri = simulation(28)
print(n)

对于最后的while循环,只要得分(stri)不等于100,它就会迭代并累积n,对吗?然后,当得分(stri)恰好等于100时,我将打印出累积的n。

但我得到的结果如下:

0
0
0
0
0
0
...

显然它总是输出'n = 0';这是因为这是全局变量吗?

但是我在循环时尝试了非常简单:

n=0
while n <= 5:
    n += 1
print(n)

它已成功输出6

我不知道为什么我的第一个代码出错了,因为def()因为循环错误而猜错?

1 个答案:

答案 0 :(得分:0)

您需要从score返回而不是打印:

def score(stri):
    if stri == goal:
        return 100
    else:
        return 0

这在while score(stri) != 100:失败,因为当你调用函数score时,它只打印(显示输出)而不返回在while循环条件中使用的值。