循环嵌套+列表使用

1. 循环嵌套

Python 语言允许在⼀个循环体里面嵌入另⼀个循环。

1.1 循环嵌套语法

while 表达式:
	while 表达式:
		代码块
	代码块

流程解析:
若 while 语句控制的代码块中还有 while 语句,则按照 while 语句的流程执行其所控制的代码块,结束后继续执行上级 while 语句代码块剩下的语句。

1.2 示例代码

  • 在写循环嵌套代码之前,先提及一个print()函数的知识点。
    print() 语句默认是换行的,比如执行两个print()得出的结果如下图:

在这里插入图片描述

将print() 的参数end写为空,则不会换行,继续打印其他内容:
在这里插入图片描述

print() 语句如果不加任何参数,则相当于输出一个换行符。
在这里插入图片描述

  • 接下来给出循环嵌套的具体代码。
    代码任务:打印出特定高度与宽度的 “*” 图形。
# 打印特定的图形
i = 0
# 外部循环控制图形高度
while i < 5:
    j = 0
    # 内部循环控制图形宽度
    while j < 5:
        # 参数end=''表示不换行
        print('*', end='')
        j += 1
    print()
    i += 1

运行结果:
在这里插入图片描述

为方便分析如何控制图形,给出图形与循环变量 i、j 之间的关系:

>  *      i = 0  j < 1          *****  i = 0  j < 5
>  **     i = 1  j < 2          ****   i = 1  j < 4
>  ***    i = 2  j < 3          ***    i = 2  j < 3
>  ****   i = 3  j < 4          **     i = 3  j < 2
>  *****  i = 4  J < 5          *      i = 4  j < 1

由上图,图形的高度与外层循环变量 i 有关,图形的宽度与内层循环变量 j 有关。
修改上述示例代码内层循环的条件表达式为:

while j < i + 1:

得到如下结果:

在这里插入图片描述
如果想得到倒三角图形,则修改内层循环条件表达式为:

while j < 5 - i:

得到如下结果:

在这里插入图片描述

1.3 循环嵌套小练习

练习题目:编写代码打印九九乘法表。
代码如下:

i = 0
# 外部循环控制乘法表高度
while i < 9:
    # 公式里面是从1开始,所以先更新循环变量
    i += 1
    j = 0
    # 内部循环控制乘法表宽度
    while j < i:
    	# 同样先更新循环变量
        j += 1
        # 参数end=''表示不换行,加入\t是为了让格式好看
        print(f'{j}*{i}={i*j}\t', end='')
    print()

运行结果:

在这里插入图片描述

2. continue和break的使用

2.1 语句解释

  • continue
    跳出本次循环,即 continue 后的语句都不执行,直接进行 while 条件表达式的判断;

  • break
    直接跳出循环,包括else(如果有)。

2.2 示例代码

i = 0
while i < 6:
    i += 1
    if i == 2:
        continue
    print(i)
else:
    print('hello')

运行结果:

在这里插入图片描述

将上述代码的 continue 改为 break,结果如下:

在这里插入图片描述

3. 序列

3.1 基本概念

  • 序列是Python中最基本的⼀种数据结构。序列用于保存⼀组有序的数据,所有的数据在序列当中都有⼀个唯⼀的位置(索引),并且序列中的数据会按照添加的顺序来分配索引。
  • 数据结构指计算机中数据存储的方式。

3.1 序列的分类

  • 可变序列(序列中的元素可以改变):例如 列表(list)字典(dict)
  • 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)

在这里插入图片描述

4. 列表

  • 列表是Python中的⼀个对象。
  • 列表的作用:
    列表中可以保存多个有序的数据;
    列表是用来存储对象的对象。

4.1 列表的使用

  • 列表可以通过 [] 创建
list = [] # 创建一个空列表
print(list, type(list))

运行结果:

在这里插入图片描述

  • 列表中可以保存任意的对象,也包括子列表。
a = 5
list = [1, 'python', None, True, [1, 2, 3], a]
print(list)

运行结果:

在这里插入图片描述

  • 列表中的元素是有序的,其索引从0开始,列表中第一个位置为0,第二个为1,以此类推。可以通过索引获取列表中元素,但不能超过其长度。
list = [1, 2, 3, 4, 5]
print(list[2])
print(list[6])

运行结果:

在这里插入图片描述

  • 可以用 len() 获取列表的长度
list = [1, 2, 3, 4, 5]
print(len(list))

运行结果:

在这里插入图片描述

  • 列表的索引值可以是负数,如果索引是负数,则从后向前取值。索引值为负数,也需要注意不能超出长度上限。
list = [10, 20, 30, 40, 50]
print(list[-1]) # -2:40 -3:30 -4:20 -5:10

运行结果:

在这里插入图片描述

4.2 切片的使用

切片是指从现有列表中获得⼀个子列表。

  • 可以通过切片来获取指定的元素;
  • 语法: 列表[起始 : 结束 : 步长];

从列表中获取 ‘乔峰’ 到 ‘郭靖’:

person = ['乔峰', '郭靖', '令狐冲', '杨过', '张无忌', '韦小宝']
print(person[0:2]) # 注意:索引2指向'令狐冲'

运行结果:

在这里插入图片描述

从上述结果看出:

  • 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素;

如果在切片时,省略起始或者结束位置的索引。

person = ['乔峰', '郭靖', '令狐冲', '杨过', '张无忌', '韦小宝']
print(person[:]) # 开始和结束位置都省略
print(person[:3]) # 省略开始位置
print(person[3:]) # 省略结束位置

运行结果:

在这里插入图片描述

从上述结果看出:

  • 如果省略结束位置,则会从当前的开始位置⼀直截取到最后;
  • 如果省略开始位置,则会从第⼀个元素截取到结束的元素,但是不包括结束的元素;
  • 如果开始位置和结束位置都省略,则则会从第⼀个元素开始截取到最后⼀个元素;

关于切片时的步长:

person = ['乔峰', '郭靖', '令狐冲', '杨过', '张无忌', '韦小宝']
print(person[0:5:1]) # 步长为1,可以省略不写
print(person[0:5:2]) # 步长为2,表示隔一个值获取元素
print(person[::-1]) # 步长为-1,表示倒叙取值
print(person[0:5:0]) # 步长不能为0

运行结果:

在这里插入图片描述

从上述结果看出:

  • 步长表示每次获取元素的间隔,默认是1(可以省略不写);
  • 获取元素的间隔等于步长减一;
  • 步长不能是0,但可以是是负数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值