我正在看Mike Dane的有关Guessing Game的python教程,我对代码感到困惑

问题描述

我对带有变量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的地方。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...