重复使用while循环

for循环并不是Python中唯一的循环结构。作为for循环的替代方法,你可以使用while循环,它的结构如下:

而<test>: #语句要重复

下面是当你到达一个while循环时会发生的事情:

  1. 评估测试。
  2. 如果测试结果为假,则继续执行语句体之后的下一条语句。
  3. 如果测试为真,则执行要重复的
  4. 回到步骤1。

while循环在我们不需要对数据项列表进行迭代,并且我们也不知道要重复多少次的情况下很有用。

这里有一个典型的例子。假设我们要计算小于或等于某个整数n的2的最大幂,这个逻辑会计算那个幂。

power = 1 n = int(input(‘输入正整数n: ’))而power <= n: power *= 2 #当我们退出回路时,功率将太大。#将它除以2来解决这个问题。Power = Power //2 print(str(Power)+‘是2的最大幂<= ’+str(n))

动态列表

一些计算过程会产生不可预测的结果。一个具有不可预测结果的过程的例子是找到一个整数的赢博体育素数因子的算法。在我们计算出除数之前,我们不能预测这个数可能有多少个因数。

在这种情况下,Python中的标准方法是创建一个列表来保存结果,但使该列表最初为空。当我们发现更多结果时,我们使用list append()方法将它们附加到列表中。Python中的方法是赢博体育于对象的函数。Python程序中的每个数据项都是一个对象,许多不同的数据类型提供了可以调用该类型对象的专用方法。方法在Python程序中很容易识别,因为它们是使用特殊的‘dot’语法调用的,其形式为

<变量>。<方法名>(<可选参数>)

下面是一个程序的代码,该程序构造一个包含给定正整数的赢博体育素数因子的列表。

divisors = [] N = int(input('Enter N: ')) # 2是第一个尝试d = 2的除数,而N > 1:如果N % d == 0: #如果d被N整除,将其添加到#除数列表中,并从N中除数。append(d) N = N//d else: #如果d不是除数,则继续尝试下一个d。d += 1 #现在打印我们找到的赢博体育除数。对于除数d: print(d)

编程任务

函数f(x)的根是x的一个值,它使函数的值等于0。在本练习中,您将构建一个程序,该程序使用简单的迭代策略来查找多项式的根。

的多项式

P (x) = x4 - 3x2 + 2x - 1

在x = 1.5附近有一个根,如下图所示。

x4 - 3 x2 + 2 x - 1

注意,如果a = 1, b = 2, p(a)是负的,p(b)是正的。

下面是一个找到a和b之间根的算法:

  1. 设c是a和b之间实直线上的中点。
  2. 如果p(c)和p(a)有相同的符号,设a = c。
  3. 如果p(c)和p(b)有相同的符号,设b = c。
  4. 重复步骤1-3,直到a和b之间的差值小于您设置的某个阈值。

编写一个Python程序来实现上面概述的策略。使用while循环来实现该算法,并让while循环继续运行,直到a和b之间的差小于0.0001。让程序在循环结束后打印(a+b)/2的值,以及该点的多项式值。