2020-11-05

1.循环嵌套

在python语言中,可以在一个循环体里嵌入另一个循环。

while 条件表达式1:
	循环体1
	while 条件表达式2:
		循环体2
		......

列题:

①.输出矩形:
*****
*****
*****
*****
*****

代码:

i = 0  # 初始化变量i
while i < 5: # 控制高度,从第1行开始输出,最多5行
    j = 0  # 初始化变量j
    while j < 5:  # 控制宽度,从第1列开始输出,最多5列
        print('*', end=' ')  # 输出 *
        j += 1 # 更新变量
    print()  # 换行
    i += 1 # 更新变量

注:end=’ ‘的作用:print()在输出后会自动换行,为了不让print()自动换行,可以在后面加上end=’ '语句。
print( )的作用:上文提到,print()会自动换行,因此可以利用这个特性,在内循环结束后输入print()实现换行的作用。

执行结果:
例题1


②.输出三角形:
*
**
***
****
*****

代码:

i = 0  # 初始化变量i
while i < 5: # 控制高度
    j = 0  # 初始化变量j
    while j <= i:  # 控制宽度
        print('*', end=' ')  # 输出 *
        j += 1 # 更新变量
    print()  # 换行
    i += 1 # 更新变量

注:与上一个列题的代码的区别是内循环的条件语句不同

执行结果
例题2


③.输出倒三角形:
*****
****
***
**
*

代码:

i = 0  # 初始化变量i
while i < 5: # 控制高度
    j = 0  # 初始化变量j
    while j < 5 - i:  # 控制宽度
        print('*', end=' ')  # 输出 *
        j += 1 # 更新变量
    print()  # 换行
    i += 1 # 更新变量

执行结果:
例题3


④.输出99乘法表:
1 * 1 = 1  
1 * 2 = 2  2 * 2 = 4  
1 * 3 = 3  2 * 3 = 6  3 * 3 = 9  
1 * 4 = 4  2 * 4 = 8  3 * 4 = 12  4 * 4 = 16  
1 * 5 = 5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25  
1 * 6 = 6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36  
1 * 7 = 7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49  
1 * 8 = 8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64  
1 * 9 = 9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81  

代码:

i = 1  # 初始化变量i,i作为被乘数
while i <= 9:  # 外循环
    j = 1  # 初始化变量j,j作为乘数
    while j <= i:  # 内循环
        print(f'{j} * {i} = {j * i} ', end=' ')  # 格式化字符串,输出当前的j * i = j*i
        j += 1  # 更新乘数
    print()  # 换行
    i += 1  # 更新被乘数

注:与例题②相似,使用两层嵌套循环,外循环控制行,内循环控制当前行的一列。输出顺序由上往下,从左往右。每完成一行的输出就用print()换行。

执行结果:
例题4


2.continue和break

通常情况下,循环只有在不满足条件的时候,才会跳出循环。但我们也可以用break或continue语句,让循环在即使满足条件的情况下也可以跳出循环。

2.1 continue

contiune语句可以跳过本次循环,但不会结束循环,在满足条件的情况下循环会继续进行。

例:

i = 0
while i < 6:
    i += 1 
    if i == 2: # 若i=2,则执行以下代码块
        continue # 跳出当次循环
    print(i, end=' ') # 输出i
else:
    print('输出完毕')

该代码会循环6次,每一次循环都会输出一次i的值,i的值也会随着每次循环自加1,但当i=2时,会执行contiune语句,跳出当次循环,因此不会输出2。然后循环不会结束,在满足条件的情况下循环继续进行,直到 i = 6

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


2.2 break

break与continue相似,但break会直接结束整个循环

例:

i = 0
while i < 6:
    i += 1
    if i == 2:  # 若i=2,则执行该代码块
        break  # 结束循环
    print(i, end=' ')  # 输出i
else:
    print('输出完毕')

在当i=2的时候,会执行break语句,结束循环,同时,因为else语句也是循环的一部分,所以在break语句执行后,也不会输出 ‘输出完毕’ 这行字

执行结果:
break语句


3.序列

3.1 概念

序列是python中的一种基本的数据结构。可以保存一组有序的数据,每个数据在序列中都有唯一的位置(索引),并且序列中的数据会按照添加的顺序分配索引。

3.2 序列的分类

序列分为:

  • 可变序列(如:列表,字典等)
  • 不可变序列(如:字符串)

问:为什么字符串是不可变序列?
答:用取索引的方法可以判断。如下:
a = 'hello',已知a变量是一个字符串变量,如果我们需要改变’hello’的值,用取索引的方法会报错。
报错1
我们用取索引的方法,想将a[0]位置的值改为’a’,结果报错:TypeError: ‘str’ object does not support item assignment
翻译:字符串是不可变对象


4.列表

列表是一种可变序列,可以通过索引获取和修改当中的元素。type = list
语法:

变量名 = [元素1,元素2,......,元素n]

列表可以保存多种类型的数据,如:
列表_1
注:列表也可以保存变量,但是变量需要先指向,否则会报错。
列表_2
错误:NameError: name ‘a’ is not defined
翻译:名称错误:未定义名称“a”

我们也可以创建一个空列表。

lst = []

4.1 通过索引(index)获取元素

索引是从0开始的,列表第一个位置为0,第二个位置为1,以此类推。
索引_1
但是,如果取索引大于当前列表的长度的话会报错。
在这里插入图片描述
IndexError: list index out of range
索引器错误:列表索引超出范围

因此,我们可以通过len()函数获取列表的长度。

语法:

len(列表名) #返回值为int

索引_3
注:以 lst = [10, 20, 30, 40, 50, 60] 为例,如果索引取负数,则会从后往前取。如:
索引_4


5.切片

概念:切片指从现有列表中,获取一个子列表。
语法:

列表名  [起始:结束]

我们以:heros = ['钢铁侠', '蜘蛛侠', '绿巨人', '黑寡妇', '鹰眼','美国队长']为例。

  • 例:取 ‘钢铁侠’ 到 ‘绿巨人’

代码:

heros = ['钢铁侠', '蜘蛛侠', '绿巨人', '黑寡妇', '鹰眼']
print(heros [0:3])

执行结果:
切片
注:切片所取的索引值是左闭右开的,即会包括起始位置,但不包括结束位置元素。

问:起始位置和结束位置可不可以不写。

  • 如果省略结束位置:
    切片_1
    如果省略结束位置,则从当前起始位置截取到列表最后一位。

  • 如果省略起始位置:
    切片_2
    如果省略起始位置,则从列表第一个元素截取到结束位置,但不包括结束位置的元素(左闭右开)

  • 如果起始位置和结束位置都不写:
    切片_3
    如果都不写,则从列表第一位截取到最后一位

步长:

我们在列表切片的时候,可以增加步长,步长可以省略
概念:步长表示每次获取元素的间隔。切片时,如果省略步长,则步长默认为 1

语法:

列表名  [起始:结束:步长]
  • 如果步长为 2:
    步长
    结论:步长为2,则隔1个取1个;步长为3,则隔2个取一个;以此类推,步长为n,则隔n-1个取一个。

  • 如果步长为 -1:
    步长_2

  • 如果步长为 -2:
    步长_3
    结论:步长可以为负数。如果步长为-1,则将列表的顺序颠倒,然后隔0个取1个;步长为-2,则将列表顺序颠倒,然后隔1个取1个;以此类推,步长为-n,则顺序颠倒,隔n-1个取1个

注:步长不能为0,否则报错步长_4
错误源码:ValueError: slice step cannot be zero
值错误:步长不能为0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值