目前,我所拥有的是
ntries = 0
def test_guess(code,guess):
if guess == code:
return True
ntries += 1
else:
return False
blackpegs = 0
whitepegs = 0
code_remainder = ''
guess_remainder = ''
ntries += 1
for x, y in zip(code,guess):
if x==y:
blackpegs += 1
elif not x==y:
code_remainder += x
guess_remainder += y
for i in guess_remainder:
if code_remander.find(i) != -1: #if i is found in the remainder of the code
whitepegs += 1
code_remainder = code_remainder.replace(i, 'X', 1)
return code_remainder
return guess_remainder
return blackpegs
return whitepegs
在下面,我有
if test_guess(code,guess)==True:
print 'You won!"
elif test_guess(code,guess)==False:
print 'Not quite. You get',blackpegs,'black pegs,',whitepegs,'white pegs.'
在我的最终印刷语句中, blackpegs
一直未定义。为什么它不等于blackpegs计数器?
答案 0 :(得分:0)
if guess == code:
return True
ntries += 1
如果您的猜测==代码,则返回true,下一步无法执行!
答案 1 :(得分:0)
您只能有一个return语句。
return code_reminder
使函数立即退出。你会想做一些像
这样的事情return code_remainder, guess_remainder, blackpegs, whitepegs
然后当您调用该函数时,请使用:
code_remainder, guess_remainder, blackpegs, whitepegs = test_guess(code,guess)
函数内声明的变量/引用仅存在于该函数中。如果要在函数外部使用它们,则需要显式返回这些变量/引用。当然,这条规则也有一些例外,但最好现在坚持这种方法。
答案 2 :(得分:0)
blackpegs
没有值。即if guess == code
,blackpeg
未定义。
需要在if else语句之前将其设置为零,或者在return
语句中调用之前以其他方式解决。