Python-05 __循环结构__

本文主要介绍Python中while循环、for循环、列表等知识点。while循环在条件为真时执行代码,可嵌套使用;for循环能遍历序列元素,常与range()函数配合;列表可通过索引、切片操作访问元素,支持连接、赋值等操作,还介绍了continue语句和for循环的else语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知识点

  • while 循环
  • print() 函数的 end 参数
  • 列表
    • 索引
    • 切片
  • for 循环
  • range() 函数
  • continute 关键字
  • for 循环中的 else 关键字

while 循环

想要多次执行的代码必须以正确的缩进放在 while 语句下面。在表达式 condition 为真的时候它们才会执行。同 if-else 一样,非零值为真。

while condition :
    statement1
    statement2

按顺序打印 0 到 9 的数字

>>> n = 0
>>> while n < 10 :
...     print(n)
...     n += 1
...
0
1
2
3
4
5
6
7
8
9

打印斐波那契(Fibonacci)数列

默认情况下,print() 除了打印你提供的字符串之外,还会打印一个换行符,所以每调用一次 print() 就会换一次行。可以通过 print() 的另一个参数 end 来替换这个换行符。

a, b = 0, 1
while b < 100:
    print(b, end = ' ') # print(b) 
    a, b = b, a + b

Python 中赋值语句执行时会先对赋值运算符右边的表达式求值,然后将这个值赋值给左边的变量。

计算幂级数:ex = 1 + x + x2 / 2! + x3 / 3! + ··· + xn / n! (0 < x < 1)。

x = float(input("Enter the value of x: "))
n = term = num = 1
result = 1.0
while n <= 100 :
    term *= x / n
    result += term
    n += 1
    if term < 0.0001 :
        break
print("No of Times= {} and Sum= {}".format(n, result))

关键字 break 可以终止循环。

while True : // 死循环
    ···
    if condition == True :
        break # 条件满足,跳出循环
    ···

打印乘法表。

i = 1
print('-' * 50)
while i < 10 :
    n = 1
    while n < 10 :
        print('{:5d}.format(i * n), end = ' ')
        n += 1
    print()
    i += 1
print('-' * 50)

在 while 循环里使用了另一个 while 循环,这被称为嵌套循环。

语句 print("-" * 50) 作用是打印 50 个 ‘-’ 。表明若字符串乘上整数 n,将返回由 n 个此字符串拼接起来的新字符串。

列表

数据结构列表的形式是中括号之间的一列逗号分隔的值。列表的元素不必是同一类型。

列表是有序的,编号从零开始。可以通过编号访问每一个元素的值。列表编号称为索引,可以使用负数的索引从列表的末尾开始计数。

可以把列表切成不同的部分,称为切片。切片操作不会改变原来的列表,返回的是其子列表,一个新的(栈)拷贝副本。注意,若切片省略第一个索引则默认为零,省略第二个索引则默认列表的大小。

切片的工作方式:切片时的索引是在两个元素之间。每个元素都有自己的索引和对应的负索引,切片是从 i 到 j 两个数值表示的边界之间的所有元素。
对于非负索引,如果上下都在边界内,切片长度就是两个索引之差。

Python 中有关下标的集合都满足左闭右开原则,切片中也是如此,也就是说集合左边界值能取到,右边界值不能取到。

Python 能够优雅地处理那些没有意义的切片索引。一个过大的索引值(即大于列表实际长度)将被列表实际长度所代替,当上边界比下边界大时(即切片左值大于右值)就返回空列表。

切片操作还可以设置步长,从切片索引开始到列表末尾,每隔几个元素取值。
同时列表也支持连接这样的操作,它返回一个新的列表。

也可以对切片赋值,此操作可以改变列表的尺寸,或清空它。

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> # 替换某些值
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> # 现在移除他们
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
>>> # 通过替换所有元素为空列表来清空这个列表
>>> letters[:] = []
>>> letters
[]

注意,切片操作不改变列表。这里并不算真正的切片操作,只是上面代码中赋值运算符左边的这种操作与切片操作形式一样而已。

检查某个值是否存在于列表中,存在则返回 True ,否则返回 False

>>> a = ['Python', 'is', 'first']
>>> 'Python' in a
True
>>> 'Java' in a
False

通过内建函数 len() 可以获得列表的长度。

>>> a = ['Python', 'is', 'first']
>>> len(a)
3

检查列表是否为空。

if list_name : # 列表不为空
    pass
else : # 列表为空
    pass

列表是允许嵌套的(创建一个包含其它列表的列表)。

>>> a = ['a', 'b', 'c']
>>> b = [1, 2, 3]
>>> x = [a, b]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][0]
'a'

for 循环

Python 里的 for 循环与 C 语言中的不同,for 循环可以遍历任何序列(比如列表和字符串)中的每一个元素。

>>> for x in a :
...     print(x)
...
Python
is
first

通过内置函数 range() 可以生成一个等差数列(并不是列表).

>>> for i in range(5):
...     print(i)
...
0
1
2
3
4
>>> range(5) # 不是列表
range(0, 5)
>>> range(1, 5)
range(1, 5)
>>> list(range(5)) # 生成列表
[0, 1, 2, 3, 4]
>>> list(range(1, 5))
[1, 2, 3, 4]
>>> list(range(1, 10, 3)) # 步长为 3
[1, 4, 7]
>>> list(range(10, 3))
[]

continue 语句

可以在循环中通过语句 continue 跳过其后的代码回到循环开始处执行。它可以帮助跳过部分循环。

要求用户输入一个整数,如果输入的是负数,那么会再次要求输入,如果输入的是正数,计算这个数的平方。用户通过输入 0 来跳出这个无限循环。

while True : # 死循环
    n = int(input("输入一个整数: "))
    if n < 0:
        continue # 返回到循环开始处执行
    elif n == 0:
        break # 跳出整个循环
    print("n 的平方:", n ** 2)
print("结束了")

for 循环的 else 语句

可以在循环后面使用可选的 else 语句。它将会在循环完毕后执行,除非有 break 语句终止了循环。

>>> for i in range(3) :
...     print(i)
... else :
...     print("for 循环结束")
...     print("执行 else 语句")
...
0
1
2
for 循环结束
执行 else 语句

总结

  • while 循环
  • for 循环

for 循环通常与 range() 函数配合使用。注意 range() 函数返回的并不是列表而是一种可迭代对象:

python 中 for 循环的 else 子句提供了检测循环是否顺利执行完毕的一种优雅方法。

返回顶部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值