01 break and continue关键字
案例:数字炸弹游戏。给定一个范围中的一个数字,N个人去猜,猜对了有惩罚。
random:随机模块
randint(a,b):从[a,b]中随机选取一个整数
import random
num = random.randint(1,100)
print(num)
案例:猜数字
import random
count = 0
flag = True
while flag:
selfNum = int(input('请输入您猜的数字:'))
count += 1
if selfNum > num:
print('再小一点')
elif selfNum < num:
print('再大一点')
else:
print('恭喜你猜对了')
# flag = False
break
print(f'第{count}次')
print(f'一共猜了{count}次')
- break和continue:循环关键字,只能放到循环中使用。
- break:被触发时,直接结束break所在循环。
- continue:被触发时,直接结束当前循环进入下一次循环
for i in range(1,21):
if i % 5 == 0:
print('********')
# continue
break
else:
print(i)
02 for else
案例:判断1到100之间的所有的素数(质数)
素数:只有1和它本身两个因子的数叫做素数,最小的素数是2。
for i in range(1,101):
if i ==1:
print(f'{i}不是素数')
elif i == 2:
print(f'{2}是素数')
else:
for j in range(2,i):
if i % j == 0:
print(f'{i}不是素数')
break
else:
print(f'{i}是素数')
- 应用场景:当所有情况都必须判断完才能下结论是使用for-else语句
- 用户名合法问题
语法:
for 变量 in 容器:
代码块
else:
代码块
当for循环正常结束时,else语句被执行;当for循环非正常结束时,else语句不执行
break、return等关键字for影响for循环的正常结束
03 列表的性质
列表
一、作用:
一次性存放多个元素。
二、列表的性质
- 列表是可变的。(可以做修改,增删改)
- 列表是有序的。(下标,每个元素有自己的固定位置)
- 列表的容器标志:[];列表的类型:list
- 列表中可以存放任意类型的数据。(建议:一个列表中的数据类型保持一致)
- 列表中允许出现重复元素
- 创建一个空列表:
list1 = []
list2 = list()
print(list1,list2)
- 创建一个非空列表
list3 = [1,1.1,True,None,'ABCDE',[123],(1,2,3)]
print(list3)
- len():能够查看容器中元素的个数(长度)
print(len(list3))
A. 对列表进行循环遍历
for i in list3:
print(i,type(i))
B. 列表的重复和拼接
拼接:生成的是一个新的列表
list1 = [1,2,3]
list2 = [4,5,6]
list3 = [1,2,3]
print(list1 + list2 + list3)
C. 重复
print(list1 * 5)
04 下标和切片
一、下标:
有序容器中每个元素的位置索引
下标分为正向下标
和负向下标
正向下标:从0开始,从左向右依次递增
负向下标:从-1开始,从右向左依次递增
获取的是单个元素
list1 = ['王者荣耀','阴阳师','三国杀','和平精英','光遇']
- 通过下标获取元素:语法:容器[下标]
print(list1[1])
print(list1[-4])
二、切片
作用:获取有序容器中部分元素
- 语法:容器[start : end : step]
- step默认为1可以不写,表示从左向右取元素。start和end也都可以不写,表示代表开头和结尾。
- start和end可以使用正向下标和负向下标。切片是左闭右开区间。
- 结果获取的还是列表
list1 = ['王者荣耀','阴阳师','三国杀','和平精英','光遇']
print(list1[1:-1]) #['阴阳师', '三国杀', '和平精英']
print(list1[1:-1:2]) #['阴阳师', '和平精英']
print(list1[:]) #['王者荣耀', '阴阳师', '三国杀', '和平精英', '光遇']
print(list1[:-1]) #['王者荣耀', '阴阳师', '三国杀', '和平精英']
print(list1[1:]) #['王者荣耀', '阴阳师', '三国杀', '和平精英']
print(list1[-1:-5:-1])#倒序 ['光遇', '和平精英', '三国杀', '阴阳师']
print(list1[::-1]) #列表倒序
print(list1[-1:-5:-3])#['光遇', '阴阳师']
- 如果step>0,end对应的元素必须在start对应元素的后边。下一次获取的元素为本次获取元素的下标+步长对应的元素。
- 如果step<0,end对应的元素必须在start对应元素的前边。下一次获取的元素为本次获取元素的下标+步长对应的元素。
练习:
list2 = ['柯南', '百变小樱', '奥特曼', '甄嬛传', '海贼王', '火影忍者', '斗破苍穹']
# 1.获取['柯南','奥特曼','海贼王','斗破苍穹']
# 2.获取['斗破苍穹','甄嬛传','柯南']
# 3.获取['奥特曼','百变小樱','柯南']
# 4.获取['柯南']
# 5.获取 柯南
print(list2[::2])
print(list2[-1::-3])
print(list2[2::-1])
print(list2[0:1])
print(list2[0])
区别: 下标不能越界,切片可以越界
list2 = ['柯南', '百变小樱', '奥特曼', '甄嬛传', '海贼王', '火影忍者', '斗破苍穹']
list2[8] #IndexError: list index out of range
list2[0:10000]
05 循环遍历
有序容器的循环遍历分为直接遍历
和间接遍历
- 直接遍历
list1 = ['A','B','C','D']
for i in list1:
print(i)
- 间接遍历
for index in range(len(list1)):
print(f'下标{index}---->{list1[index]}')
# for index in range(len(list1) * -1, 0):
for index in range(-len(list1), 0):
print(f'下标{index}---->{list1[index]}')
练习:获取元素’C‘的下标
list1 = ['A','B','C','D']
for i in range(len(list1)):
if list1[i] == 'C':
print(i)
break
06 列表的增删改
一、增加
append
:在列表的末尾追加一个元素
insert
:在列表的任意位置添加一个元素
extend
:将一个容器的元素添加到列表中
list1 = []
print('---向列表中添加元素---')
#append
list1.append('Python')
list1.append('Java')
print(list1)
#insert
list1.insert(1,'C++')
print(list1)
#extend
list2 = ['UI','C','Go','HTML','Pyhton']
list1.extend(list2)
print(list1)
二、 修改
通过下标修改元素
list1[1] = 'Python'
print(list1)
三、 删除
del
:通过下标删除元素,下标超出范围报错
remove
:删除指定的元素,要删除的元素不存在要报错
pop
:通过下标删除元素,下标超出范围报错 删除的元素还可以被找回
clear
:清空列表
#del
del list1[0]
print(list1)
#remove
list1.remove('C')
print(list1)
list1.remove('Python')
print(list1) # 一次只删第一个删除元素
#pop
content = list1.pop()
print(content)
print(list1)
#clear
list1.clear()
print(list1)
练习:生者死者游戏。
30 个人在一条船上,超载,需要 15 人下船。于是人们排成一队,排队的位置即为他们的编号.报数,从 1 开始,数到 9 的人下船。如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?
peopleList = []
for i in range(1,31):
peopleList.append(i)
while len(peopleList) > 15:
num = 1
while num < 9:
num += 1
peopleList.append(peopleList.pop(0))
people = peopleList.pop(0)
print(people)
print(peopleList)
船了呢?
```python
peopleList = []
for i in range(1,31):
peopleList.append(i)
while len(peopleList) > 15:
num = 1
while num < 9:
num += 1
peopleList.append(peopleList.pop(0))
people = peopleList.pop(0)
print(people)
print(peopleList)