Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
艰苦学习Python ex35熊屋_Python_While Loop_Branch_Python 3.5 - Fatal编程技术网

艰苦学习Python ex35熊屋

艰苦学习Python ex35熊屋,python,while-loop,branch,python-3.5,Python,While Loop,Branch,Python 3.5,在继续之前,我试图理解“艰难地学习Python”示例35问题中的一段特定代码 按照这本书的要求,我在上面几乎每一行(或每一块)的代码中都写了一条注释,以分解正在发生的事情,从而测试我对正在发生的事情的理解 我在while循环中使用的一些分支逻辑有点问题,我将发布其中的一个(我发布的是一个修改过的版本,它将帮助显示我一直在做什么,以确保我理解事情) 如您所见,我实现了一些调试功能,包括将输入提示符更改为显示我正在处理的代码块,以及一个计数器,显示我在循环中进行了多少次传递 我正在试图理解代码片段,

在继续之前,我试图理解“艰难地学习Python”示例35问题中的一段特定代码

按照这本书的要求,我在上面几乎每一行(或每一块)的代码中都写了一条注释,以分解正在发生的事情,从而测试我对正在发生的事情的理解

我在while循环中使用的一些分支逻辑有点问题,我将发布其中的一个(我发布的是一个修改过的版本,它将帮助显示我一直在做什么,以确保我理解事情)

如您所见,我实现了一些调试功能,包括将输入提示符更改为显示我正在处理的代码块,以及一个计数器,显示我在循环中进行了多少次传递

我正在试图理解代码片段,它说:

elif choice == "taunt bear" and not bear_moved
我知道这个while循环基本上是在等待您进入将退出循环的一个分支(dead()或另一个_room()位)。我还知道熊的默认“状态”是“未移动”,并且“嘲弄熊”分支将更改熊的状态。不过,我没有得到这段代码的“和”部分

我的理解是:

bear_moved = False
在我看来,这意味着如果你简化这个逻辑,“和不被移动的熊”将被解释为“和不被移动的熊(假)”,反过来会读为“和被移动的熊(真)”。所以,用简单的英语写,“如果你的选择是嘲弄熊,而熊被移动了,执行一些打印语句……增加计数器,等等。”显然,代码不是这样工作的。我可以从我的计数器和运行程序中看出“and not”语句并没有像我刚才解释的那样起作用

我想我是在假设bear_moved在我编写代码时被设置为False的情况下操作的。如果Python假设bear_moved是真的,我可以理解它在做什么。我在想:

bear_moved = False
因此:

not bear_moved == True
这就是我要澄清的问题


提前感谢。

这里,
未移动
表示
移动

引述:

如果运算符的参数为false,则运算符不生成True,否则为false


这里,
notbear\u moved
表示
bear\u moved
False

引述:

如果运算符的参数为false,则运算符不生成True,否则为false


对于分支来说,该语句必须在其条件下为true

如果你输入的是嘲讽,那首先表明是真的

在第二部分(和的另一面)“未移动”中,这也必须评估为真。布尔值表示,如果bear为false且使用了“not”,则该值变为true。基本上读起来是bear=true

现在您有2个trues用于分支的进程


我想这种困惑来自于认为熊已经移动了。实际上,这只是一个变量,在您更改它之前,您会将单词false存储在其中。分支机构想要的只是一个干净的、真正进步的房子。不要将假变为真

要使分支前进,语句必须为true,并且在其条件下为true

如果你输入的是嘲讽,那首先表明是真的

在第二部分(和的另一面)“未移动”中,这也必须评估为真。布尔值表示,如果bear为false且使用了“not”,则该值变为true。基本上读起来是bear=true

现在您有2个trues用于分支的进程


我想这种困惑来自于认为熊已经移动了。实际上,这只是一个变量,在您更改它之前,您会将单词false存储在其中。分支机构想要的只是一个干净的、真正进步的房子。不要将假变为真

不,为什么是这个意思
和not bear_moved
简单地翻译为
,bear_moved的值为false
。不,这意味着什么
和not bear_moved
简单地翻译为
,bear_moved的值为false
。这是我很难理解的。对我来说,把它写成“…和bear_moved==False”比“…和not bear_moved”更有意义。我无法直观地理解这一点,这简直让我发疯——就像我知道这是一个简单的概念,但它就是不起作用一样。@Anthony如果有帮助的话:你在问题中所说的正是发生的事情(“我在想
bear\u moved=False
因此:
not bear\u moved==True
).这是我很难理解的。对我来说,把它写成“…和bear_moved==False”比“…和not bear_moved”更有意义。我无法直观地理解这一点,这简直让我发疯——就像我知道这是一个简单的概念,但它不会点击一样。@Anthony如果有帮助的话:你在问题中所说的正是发生的事情(“我在想
bear_moved=False
因此:
not bear_moved==True
)。嘿,我只是想说我有(谢天谢地)很久以前就解决了这个问题!感谢您添加了更多的上下文,以防将来有人在这个问题上陷入困境。嘿,这里-只是想说我(谢天谢地)很久以前就解决了这个问题!感谢您添加了更多上下文,以防将来有人在这个问题上陷入困境。
not bear_moved == True