我的变量怎么没定义?

时间:2015-03-01 03:27:19

标签: python

目前,我所拥有的是

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计数器?

3 个答案:

答案 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)

除非达到else语句,否则

blackpegs没有值。即if guess == codeblackpeg未定义。

需要在if else语句之前将其设置为零,或者在return语句中调用之前以其他方式解决。