Python 循环结构

2023-05-16

在python中,循环结构有for循环和while循环两种。

1.while循环

while循环结构格式:

while 条件表达式:

        条件执行体

当条件表达式判断为真时,就执行条件执行体中的内容。

如我们写 while i,此时即当i不等于0时,循环继续,当i为0时,循环终止。

实例1:求前n项和

sum = 0
a = int(input("a="))
b = 0
while b <= a:
    sum += b
    b += 1
print("和为", sum)

当我们输入10时,输出结果为:

55

我们来解析该段代码。首先定义三个变量sum、a、b,while循环的结构是:当b 小于等于 a时,循环运行,而执行体中,sum += b即在sum中加入此次b的值,再对b执行+1操作,如此循环下去,直到某次b > a时,循环结束,输出结果。

实例2:求前n项偶数和

while b <= a:
    sum += b
    b += 2
   print("和为", sum)

        此外,while循环可以与else结构结合,形成结构:

while 条件表达式:

        条件执行体1

else:

        条件执行体2

        else在此处的意义为,当while完整执行且没有出现问题时,执行else里面的代码。如我们借此改造我们实例1的代码:

sum = 0
a = int(input("a="))
b = 0
while b <= a:
    sum += b
    b += 1
else:
    print("和为", sum)

        也就是说,当前代码如果sum正常相加完且while没有抛出错误,则执行else中的print代码。但若如果while中出现了错误或出现中断循环的情况(可见后续break和continue介绍),则此时不会执行else中的代码。

2.for循环

        学习for循环结构之前,我们先得了解与for循环搭配最多的range函数:

range函数用于生成一个整数序列(的迭代器)。其格式为:range(start[, end[, step]])。

当range中只有start时,此时意义为生成一个[0, start)的整数序列,步长为1(前闭后开),如range(5) 即相当于 [0, 1, 2, 3, 4]。

当range既有start也有end时,此时意义为生成一个[start, end)的整数序列,步长为1,如range(5, 10) 即相当于 [5, 6, 7, 8, 9]。

当start、end和step都存在时,此时意义为生成一个步长为step,在[start, end)范围内的整型序列,如range(8, 18, 2) 即相当于 [8, 10, 12, 14, 16]。

(步长可以看作是两数之间相差的大小)

        当然,range生成的整型序列不能直接当做列表或元组等的使用,而是需要使用对应的类型函数进行类型转换,如list(range(5))、tuple(range(1, 9, 3))等。

        for与关键字in相结合使用,其结构为:

for 自定义变量 in 可迭代对象:

        循环体

(若循环体内不需要访问自定义变量时,可以将自定义变量用下划线代替)

        可迭代对象在前期可能较难理解,可以理解为如列表、字符串、元组、集合等元素可以挨个访问的对象。

实例1:

for i in range(10):
    print(i, end=", ")

        此时的输出结果为:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

        因为range相当于生成了[0, 10)的整数序列,for ... in 对该序列的元素挨个访问。

实例2:

a = int(input("a="))
for _ in range(a):
    print("run")

        当输入10时,可以发现此时run输出了10次。

实例3:求前n位偶数和

n = int(input("n="))
sum = 0
for i in range(0, n + 1, 2):
    sum += i
    print(i)

        通过对步长的编写,而减少是对其自身的+2。此处要写成n+1是因为end处是开区间。

实例4:求水仙花数

        水仙花数是指自身=个位三次方+十位三次方+...,如153,1 ** 3 + 5 ** 3 + 3 ** 3 = 3 + 125 + 27 = 153,所以153是水仙花数。

for ia in range(100, 1000):
    ib = ic = id = ia
    ib = ib % 10
    ic = ic % 100
    ic = ic // 10
    id = id / 100
    id = int(id % 10)
    if ia == ib ** 3 + ic ** 3 + id ** 3:
        print(ia, "是水仙花数")

        其中,ia即对100到999的遍历的数字,而ib 为ia个位数,ic为十位数,id为百位数,通过遍历和判断即可求得水仙花数。输出结果为:

153 是水仙花数
370 是水仙花数
371 是水仙花数
407 是水仙花数

        同样的,for循环结构也能与else结合,作用和结束/执行条件与 while中类似,此处不再赘述。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 循环结构 的相关文章

随机推荐