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()
因为循环错误而猜错?
答案 0 :(得分:0)
您需要从score
返回而不是打印:
def score(stri):
if stri == goal:
return 100
else:
return 0
这在while score(stri) != 100:
失败,因为当你调用函数score
时,它只打印(显示输出)而不返回在while循环条件中使用的值。