来自如何像计算机科学家一样思考的 While 循环

     2023-02-25     207

关键词:

【中文标题】来自如何像计算机科学家一样思考的 While 循环【英文标题】:While loop from How to think like computer scientist 【发布时间】:2014-05-31 06:57:07 【问题描述】:

我是新手,刚开始阅读 Think Python 书。 在迭代章节中,作者给出了while循环的例子:

def countdown(n):
    while n > 0:
        print n
        n = n-1
    print "Blastoff!"

这很容易理解,打印 n 并且当 n=n-1 直到 n>0 成立为止。

但下一个示例有点不同,我不明白:

def sequence(n):
    while n != 1:
        print n,
        if n % 2 == 0:        # n is even
            n = n / 2
        else:                 # n is odd
            n = n * 3 + 1

n!=1 当且仅当 n=0 或 n=1 时才成立,在此示例中,n=0 作为后续计算的结果是不可能的,我们假设 n=0 作为初始输入. 所以假设n = 3 计算如下:3,10,5,16,8,4,2,1。

分析两个例子我看到了争议:

在示例 1 中,循环一直保持到条件 n>0 为真,一旦 n>0 为假,循环就会中断。 在示例 2 中,循环一直保持到条件 n!=1 为假的点,一旦 n!=1 变为真,循环就会中断。

观察了这两种情况,我看到了在第一个示例中 while 循环如何工作的争议,而在第二个示例中,它一直执行到条件为假为止。 请指教如何理解,如果不提条件是真还是假,为什么程序在true bool中执行循环一次,在false bool中执行第二次?

【问题讨论】:

n!=1 表示“n 不等于 1”。因此,如果 n=0 或 n 不是 1,则为真。当它为真时,循环将继续。循环实际上会一直持续到 n=1。 我不是真正的蟒蛇人。其实根本不知道。但是我把它作为一个编程逻辑问题来回答。 【参考方案1】:

n!=1 表示“n 不等于 1”。因此,如果 n=0 或 n 不是 1,则为真。当它为真时,循环将继续。循环实际上会一直持续到 n=1。

你说:

一旦 n!=1 变为真,循环就会中断。

没有。这是一个 while 循环。所以它会循环条件为真。所以只要n!=1 变成FALSE,循环就会被打破。

我认为你迷失在双重否定中。

【讨论】:

【参考方案2】:

两者都运行直到条件为True

在这两种情况下都说 n = 3:


当 n > 0

3 > 0 : #TRUE  (do 3--)
2 > 0 : #TRUE  (do 2--)
1 > 0 : #TRUE  (do 1--)
0 > 0 : #FALSE (break)

当 n != 1

3  != 1 : #TRUE  (do 3 * 3 + 1 = 10)
10 != 1 : #TRUE  (do 10/2)
5  != 1 : #TRUE  (do 5 * 3 + 1)
...
2  != 1 : #TRUE  (do 2/2)
1  != 1 : #FALSE (break)

PS:就像你会大声想的那样

“3 不等于 1”即n != 1,3不等于1”——正确的陈述 “3 等于 1”即n == 1,3不等于1”——虚假陈述 “3 大于 1”即n > 1是的,3大于1”——正确的陈述

【讨论】:

编程学习之-用python3的方式思考

...址放在文章最后面。Thewayoftheprogram这本书的目标是教你像计算机科学家一样思考。这种思维方式结合了数学、工程和自然科学的一些最佳特征。像数学家一样,计算机科学家使用形式语言来表示思想(特别是计算)。像工程师... 查看详情

总结4

...判断一个条件成立则做...不成了则做...为何要有if判断让计算机像人一样具有判断的能力while循环1.什么是循环  循环指的是一个重复做某件事的过程2.为何要有循环  为了让计算机像人一样重复做某件事3.如何用循环while循环... 查看详情

吸星大法:像科学家一样思考

吸星大法:像科学家一样思考吸星大法元认知=耐心+刻意分块练习+思维/心理/身体过程关键点反馈+调控像科学家一样思考=元认知+模式识别+机器学习 吸星大法最牛逼的技能是吸星大法,碰到啥学啥&#... 查看详情

像 while 循环一样,我怎样才能跳过 for 循环中的一个步骤?

】像while循环一样,我怎样才能跳过for循环中的一个步骤?【英文标题】:Likewhileloops,howcanIskipastepinaforloop?【发布时间】:2020-03-1107:52:18【问题描述】:我尝试跳过for循环中的几个步骤,例如while循环。在while循环中,将步骤调整... 查看详情

随笔:《像火箭科学家一样思考:将不可能变成可能》观书有感

最近看完了一本书《像火箭科学家一样思考:将不可能变成可能》,蛮受启发,特此记录一下。第一点:普通人思考问题往往采用的是收敛思维,而火箭科学家则采用的是发散思维。我们在真实生活中是很容... 查看详情

随笔:《像火箭科学家一样思考:将不可能变成可能》观书有感

最近看完了一本书《像火箭科学家一样思考:将不可能变成可能》,蛮受启发,特此记录一下。第一点:普通人思考问题往往采用的是收敛思维,而火箭科学家则采用的是发散思维。我们在真实生活中是很容... 查看详情

如何像在 mashable.com 中一样计算来自 Facebook、Twitter、G+ 等的总份额

】如何像在mashable.com中一样计算来自Facebook、Twitter、G+等的总份额【英文标题】:HowtocounttotalsharesfromFacebook,Twitter,G+,etcliketheydidinmashable.com【发布时间】:2013-04-0303:47:52【问题描述】:有人知道http://mashable.com是如何创建一个巧妙... 查看详情

流程控制之while循环(代码片段)

...一个重复做某件事的过程 2.为何要有循环 为了让计算机能够像人一样重复做某件事3.如何用循环 #while循环的语法:while循环又称为条件循环,循环的次数取决于条件while条件子代码1子代码2子代码3....print("start")whileTrue:&nbs... 查看详情

流程控制之while循环(代码片段)

...件事的过程 2.为何要有循环    为了让计算机能够像人一样重复做某件事3.如何用循环 #while循环的语法:while循环又称为条件循环,循环的次数取决于条件 while条件  子代码1  子代码2&n 查看详情

来自while循环的数字相乘

】来自while循环的数字相乘【英文标题】:multiplicationofnumbersfromwhileloop【发布时间】:2022-01-0301:27:15【问题描述】:我正在尝试将我从while循环中获得的数字相乘。像1.1*1.2*1.3...*2-数字从1.1开始,停在2我已经这样做了,但它给了... 查看详情

如何像企业家一样思考

...会给你带来太多的好处。要想从中收获更多,你必须明白如何思考。设想一下,一个企业要不断地向前发展,应该怎么做?不难发现:首先,企业要有一个产品或服务。对大多数软件开发人员来说,卖的就是开发软件这项服务;... 查看详情

我如何像真正的测试人员一样系统地测试和思考

】我如何像真正的测试人员一样系统地测试和思考【英文标题】:HowdoIsystematicallytestandthinklikearealtester【发布时间】:2010-08-1006:36:37【问题描述】:我的朋友今天问了我这个问题。如何测试自动售货机并告诉我它的测试用例。我... 查看详情

如何像黑客一样思考_转

转自:https://news.cnblogs.com/n/554087/   黑客也许是世界上最酷的工作之一了,与忍者、海盗和超级间谍并列。  当我还是个小孩子的时候,我希望自己成为印第安纳·琼斯(indianajones)或詹姆斯·邦德(JamesBond... 查看详情

我的对象显然没有属性“货物”

...是自学python。不幸的是,我真的被困住了!我在“如何像计算机科学家一样思考”的第19章。这里的对象是写一个优先队列ADT的实现,使用一个链表。我在第22行和第32行遇到错误。我对这个错误的理解是,我的一个或多个节点对 查看详情

PHP / MYSQL:如何在while循环中循环来自查询的匹配结果

】PHP/MYSQL:如何在while循环中循环来自查询的匹配结果【英文标题】:PHP/MYSQL:howtoloopmatchingresultsfromaqueryalreadyinsideawhileloop【发布时间】:2015-02-1408:43:48【问题描述】:我对PHP/MYSQL很陌生,发现这很难解释,所以希望有人能理解我... 查看详情

计算机程序设计思想与方法2什么是计算思维?

 1.2什么是计算思维?如《【计算机程序设计思想与方法】1什么是计算?》中所述,计算是利用计算机一步一步地执行指令来解决问题的过程,计算机科学是关于计算的科学。正如数学家在证明数学定理时,有独特的数学思... 查看详情

python的while循环小红8岁,妈妈38岁,多少年后妈妈的年龄是小明的三倍?

这个问题很难回答,因为它涉及编程和计算机科学范围之外的概念和信息。在编程中,aloop是一种控制结构,只要满足某个条件,它就允许您多次重复代码块。循环具有以下语法:whilewhile这里是一个布尔表达式,用于确定是否执... 查看详情

如何在html textarea中打印javascript while循环结果?

】如何在htmltextarea中打印javascriptwhile循环结果?【英文标题】:Howtoprintjavascriptwhileloopresultinhtmltextarea?【发布时间】:2019-07-1709:33:23【问题描述】:当输入为2时打印\'2x10=20\'但不是整个表。我尝试了各种方法。但结果是一样的。... 查看详情