我是一个完全的新手,刚刚开始思考Python的书。在关于迭代的章节中,作者带来了以下关于同时循环的示例:
def countdown(n):
while n > 0:
print n
n = n-1
print "Blastoff!"
这很容易理解,打印n,当n = n-1直到n点直到n
但是下一个例子有点不同,我不明白:
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
观察了这 2 种情况后,我看到了争议,while 循环如何在第一个示例中工作,而循环执行到条件为真,而在第二个示例中,它执行到条件为假。请告知如何理解它,如果我们不提到条件应该是真或假,为什么程序在真布尔值中执行一次循环,第二次在假布尔值中执行?
两者都运行,直到条件为< code >真
在这两种情况下都说n=3:
3 > 0 : #TRUE (do 3--)
2 > 0 : #TRUE (do 2--)
1 > 0 : #TRUE (do 1--)
0 > 0 : #FALSE (break)
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)
附:就像你会自言自语一样
n!=1
<代码>n=1表示“n不等于1”。因此,如果n=0或n不是1,则为真。当为真时,循环将继续。循环将继续,直到实际n=1。
你说:
一旦n!=1变为真,循环就会中断。
不。这是一个while循环。所以当条件为真时它会循环。所以只要< code>n!=1变为< code>FALSE,循环将被中断。
我认为你迷失在双重否定中。
本书的目标是教读者像计算机科学家一样思考。我喜欢计算机科学家思考问题的方式,因为他们兼备了数学、工程和其他自然科学领域研究者的一些最优秀的特点。 计算机科学家能像数学家那样,用形式化语言表达思想(尤其是计算思想);也能像工程师那样,设计组件、合成系统并权衡各种备选方案;还能像科学家那样,观察复杂系统的行为、形成假设并进行检验。
这是 Think Python 这本书的第二版,本次使用的是 Python3,与 Python2 有很多不同,这些不同之处会有标注。如果你用 Python2 的货,还是建议你去阅读上一个版本。
有这样一些,例如算法,数据结构,数学,还有其他极客范的大多数程序员知道但很少使用的东西。实践中,这种奇妙的东西太复杂了,通常是不需要的。例如,当你花费大多数时间在低效的数据库调用上时,提高算法是没有什么用的。不幸的大量编程由让系统相互交流以及使用非常简单的数据结构去构建漂亮的用户界面组成。 高科技什么时候是合适的科技?你什么时候应当打开一本书去找一些东西而非一个毫秒级算法?做这些有时候是有用的,但
本书全面而详细地阐述了计算机科学的理论基础,从抽象概念的机械化到各种数据模型的建立,用算法、数据抽象等核心思想贯穿各个主题,很好地兼顾了学科广度和主题深度,帮助读者培养计算机领域的大局观,学习真正的计算机科学。
Python 在科学计算上的应用非常广泛,包括数学、统计学、图形学……等等, 也是科学计算领域的首选编程语言之一。 这一部分的文章主要是介绍 Python 在科学计算领域常用的库,以及科学计算在日常中可能的实际用例。 常用库介绍 IPython 和 Jupyter Notebook NumPy NumPy 是 Python 科学计算生态系统的基础,提供了多维数组操作、线性代数运算、傅立叶变换等 多
1.3.什么是计算机科学 计算机科学往往难以定义。这可能是由于在名称中不幸使用了“计算机”一词。正如你可能知道的,计算机科学不仅仅是计算机的研究。虽然计算机作为一个工具在学科中发挥重要的支持作用,但它们只是工具。 计算机科学是对问题,解决问题以及解决问题过程中产生的解决方案的研究。给定一个问题,计算机科学家的目标是开发一个算法,一系列的指令列表,用于解决可能出现的问题的任何实例。算法遵循它有限的过