问题描述
我对带有变量out_of_guesses的Guesing游戏感到困惑。而guess!= guess_number而不是(out_of_guesses)。因为如果使用NOT运算符,则out_of_guesses变量将变为True,因此:当猜测不等于密码且不为False时继续吗?那么out_of_guesses变量将变为True,您会输掉吗?
secret_word = "giraffe"
guess_count = 0
guess_limit = 3
guess = ""
out_of_guesses = False
while guess != secret_word and not (out_of_guesses):
if guess_count < guess_limit:
guess = input("Enter guess: ")
guess_count += 1
else:
out_of_guesses = True
if out_of_guesses:
print("Out of guesses,you lose.")
else:
print("You win!")
解决方法
我认为这很简单,您明白了,但是我想解释一下代码。 首先,您的代码是错误的。并且您应该在第6行中替换secret_word而不是secret_number:
while guess != secret_word and not (out_of_guesses):
首先,out_of_guesses为False,而不是(out_of_guesses)给出True值,但是当out_of_glasses变为True时,我们要完成一段时间
因此,当您的guess_count变得大于guess_limit(3)时,我们应该为out_of_guesses分配True,以便在下一个while循环中,当ine 6的检查条件(不是(out_of_guesses))给我一个False时就这样。
当您没有这种情况时,您的循环将无限继续
while guess != secret_word and not (out_of_guesses):
if guess_count < guess_limit:
guess = input("Enter guess: ")
guess_count += 1
else:
out_of_guesses = True
这里发生的是只要guess
的值不等于secret_word
AND not (out_of_guesses)
,我认为这是一个布尔标志,它将一旦您猜不到了,换句话说就是True
这部分在这里
guess_count went greater than your guess_limit
因此,假设 if guess_count < guess_limit:
guess = input("Enter guess: ")
guess_count += 1
else:
out_of_guesses = True
和我猜到了secret_word = "giraffe"
。所以发生了什么
guess!= secret_word->将是 True语句,因为“长颈鹿”是 确实不等于“青蛙”
AND
不是(out_of_guesses)->将是 True语句
"frog"
最初设置为False,所以不是False当然是True
因此since out_of_guesses
将为True,从而使while循环继续进行,而您唯一会放松的是,当True and True
设置为True时
从而使语句out_of_guesses
等于False 在下一个循环/迭代上会导致not (out_of_guesses)
, out_of_guesses的值是多少? 是对的!因此not (out_of_guesses)
基本上是not True
。那是它将不再继续False
的地方。