首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何改进monkey_trouble编码问题的代码?

如何改进monkey_trouble编码问题的代码?
EN

Stack Overflow用户
提问于 2022-10-02 21:11:51
回答 3查看 68关注 0票数 0

我们有两只猴子,a和b,参数a_smile和b_smile表示每个猴子是否在微笑。如果他们都在笑,或者他们俩都不笑,我们就有麻烦了。如果我们有麻烦的话,还真。

我的解决办法是这个,其实我能很快地解决这个问题。以前,当我尝试这些的时候,我一次也做不到,但是,我一直在变好,但是,我仍然知道我很糟糕。*\

代码语言:javascript
运行
复制
def monkey_trouble(a_smile, b_smile):
  if a_smile and b_smile:
    return True
  if not a_smile and b_smile:
    return False
  if not a_smile and not b_smile:
    return True
  if a_smile and not b_smile:
    return False

我看到了这样的解决方案:

代码语言:javascript
运行
复制
if a_smile==b_smile:
    return True
  return False

我也不太明白。

如果a_smile==b_smile ->返回true,我就会得到它。

如果不是a_smile而不是b_smile:->返回true

但是对于那些如果不是只有一个微笑,我就不明白代码是如何工作的。

EN

回答 3

Stack Overflow用户

发布于 2022-10-02 21:19:58

如果'a‘和'b’的微笑相等,它将返回True。这意味着如果两个微笑都是真实的,它将返回真实,如果两个微笑都是假的,它将返回真实。

但是,如果它们不相等(意味着一个为真,另一个为假),它将不会在if语句中运行程序,因此程序将继续并返回False。

这与他们的脚本相同,但我只是添加了一个else语句,以便更容易理解:

代码语言:javascript
运行
复制
if a_smile == b_smile:
    return True
else:
    return False
票数 0
EN

Stack Overflow用户

发布于 2022-10-02 21:20:29

如果微笑是布尔的(TrueFalse),那么a_smile == b_smile就相当于:

代码语言:javascript
运行
复制
(0 == 0) or (1 == 1)

...which与以下内容相同:

代码语言:javascript
运行
复制
if (not a_smile and not b_smile) or (a_smile and b_smile):
    return True

另一个选项是a_smile != b_smile,它与以下内容相同:

代码语言:javascript
运行
复制
(0 != 1) or (1 != 0)

同样,可以将其分解为:

代码语言:javascript
运行
复制
if (not a_smile and b_smile) or (a_smile and not b_smile):
    return False

最后,我们有:

代码语言:javascript
运行
复制
if (not a_smile and not b_smile) or (a_smile and b_smile):
    return True
else:
    return False

嘿,这实际上涵盖了所有四个案子!您的原始代码也可以简化为上面的代码,这相当于使用==的代码。

还请注意如何以不同的方式解释任务的文本:

:如果他们都在笑,或者他们都没有笑,我们就有麻烦了。如果我们有麻烦的话,还真。

所以,如果飞蛾猴子有同样的“微笑状态”,我们就会返回True。因此:

代码语言:javascript
运行
复制
def monkey_trouble(a_smile, b_smile):
    return a_smile == b_smile # is the "smiling status" the same?

...which与您的原始代码、文章中的第二段代码以及这个答案中“最终,我们有”之后的代码相同。

票数 0
EN

Stack Overflow用户

发布于 2022-10-02 21:33:52

只要a_smileb_smile是布尔值,那么True值表示微笑,False表示不微笑。

==操作符检查左值是否等于右值,从而检查两只猴子是否都在微笑或都不笑。它不只是在正值的情况下进行比较。

代码语言:javascript
运行
复制
if a_smile==b_smile:
    return True

由此我们可以推断,如果值不相等(else),那么我们是安全的:

代码语言:javascript
运行
复制
return False

*注意,由于前面一行的返回,我们不需要编写else

现在我们应该注意到,一个条件最终会被计算为一个布尔值。这意味着我们可以进一步简化代码:

代码语言:javascript
运行
复制
def monkey_trouble(a_smile, b_smile):
    return a_smile == b_smile 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73929387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档