day4 Python笔记总结
在经过上节课对循环语句的学习,对循环的用法有了基础性的学习。对于学习嵌套循环的对比打下了基础。
一、嵌套的循环对比
import time
嵌套的循环对比作用是:直接借用别人实现好的功能来解决你遇到的问题。在Python将1970年1月1日设置为第一天,time()得到的结果是从第一天到这一行代码。
例如:
start = time.time()
for x in range(0, 35):# y代表中马for y in range(0, 51):if 6 * x + 4 * y + (100 - x - y) == 200:print(f'大马使用{x}匹,中马使用{y}匹,小马使用{100 - x - y}匹')
end = time.time()
print(f'程旭执行花费时间为{end - start}')
print('——————————————————————————————————————————')for i in range(0, 35):for j in range(0, 51):for z in range(0, 101):if i + j + z == 100 and 6 * i + 4 * j + z == 200:print(f'大马{i}匹,中马{j}匹,小马{z}匹')
end = time.time ()
print(f'程旭执行花费时间为{end - start}')
输出结果为:
大马使用2匹,中马使用30匹,小马使用68匹
大马使用5匹,中马使用25匹,小马使用70匹
大马使用8匹,中马使用20匹,小马使用72匹
大马使用11匹,中马使用15匹,小马使用74匹
大马使用14匹,中马使用10匹,小马使用76匹
大马使用17匹,中马使用5匹,小马使用78匹
大马使用20匹,中马使用0匹,小马使用80匹
程旭执行花费时间为0.0009999275207519531
——————————————————————————————————————————
大马2匹,中马30匹,小马68匹
大马5匹,中马25匹,小马70匹
大马8匹,中马20匹,小马72匹
大马11匹,中马15匹,小马74匹
大马14匹,中马10匹,小马76匹
大马17匹,中马5匹,小马78匹
大马20匹,中马0匹,小马80匹
程旭执行花费时间为0.03200221061706543
二、break和continue关键字的用法比较
例如在案例中:数字炸弹游戏。给定一个范围内随机一个数字,N个去猜,猜对了有惩罚。
#数字炸弹游戏。给定一个范围内随机一个数字,N个去猜,猜对了有惩罚。
#random:
随机模块
#randint(a,b)
:从[a,b]中随机选取一个整数
num = random.randint(1, 100)
# print(num)
flag = True
while flag:selfNum = int(input('请输入您猜的数字:'))if selfNum > num:print('再小一点')elif selfNum < num:print('再大一点')else:print('恭喜你猜对了,接受惩罚')# flag = Falsebreakprint('==========')
break
和continue:
循环关键字,只能放到循环中去使用
break:被触发时,直接结束break所在循环
continue:被触发时,直接结束当前循环进入下一次循环
输出结果为:请输入您猜的数字:
例如:
for i in range(1,21):if i % 5 ==0:print('****')#continuebreakprint('====')else:print(i)
结果为:
1
2
3
4
三、for-else和while-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}不是素数')breakelse:print(f'{i}是素数')
应用场景:当前所有情况必须判断完才能下结论时使用for-else语句
关于用户名合法问题
"""
语法:
for 变量 in 容器:代码块
else:代码块"""
在for-else语句中,当for
循环正常结束时,else语句被执行;当for循环非正常结束时,else语句不执行。
当break、return等关键字会影响for循环的正常结束。(限于有序循环中)
四、列表的性质
1、列表的作用:一次性存放多个元素
2、列表的性质:
1.列表是可变的,(可以做修改)
例如:创建一个空列表
list = []
list2 = list()
print(list1,list2)
2.列表是有序的(下标,每个元素有自己的固定位置)
3.列表的容器标志:[];列表的类型:list
4.列表中可以任意存放类型的数据(建议:一个列表中的数据类型保持一致)
例如:创建一个非空列表
list3 = [1, 1.1 , True, None,'abcde', [123], (1 ,2 ,3 )]
print(list3)
print(len(list3))
用len();
能够查看容器中元素的个数
5.列表中允许重复出现元素
例如:在列表list1
中
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [1, 2, 3]
print(list1+ list2+ list3)
可重复
print(list1 * 5)
五、下标和切片
1、下标
下标:有序容器中每个元素的位置索引
下标分为正向下标和负向下标
正向下标:从0开始,从左到右依次递增
负向下标:从1开始,从右到左依次递减
可通过下标获取元素,语法:容器[下标]
例如:
list1 = ['王者','阴阳师','三国杀','和平精英', '光遇']
print(list[1])
print(list[-4])
输出为:
list[1]
list[-4]
2、切片
作用:获取有序容器中部分元素
语法:容器[[start:end:stpe]
stpe默认为1可以不写,表示从左到右取元素.start和end也可以不写,表示代表开头和结束
start和end可以使用正向下标和负向下标.切片时左闭右开区间.
例如·:
list1 = ['王者','阴阳师','三国杀','和平精英', '光遇']
print(list1[1:-1])#
输出为:['阴阳师','三国杀','和平精英']
print(list1[1:-1:2])
输出为:['阴阳师','和平精英']
print(list1[:])
输出为:['王者','阴阳师','三国杀','和平精英','光遇']
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 = ['柯南', '百变小樱', '奥特曼', '甄嬛传', '海贼王', '火影忍者', '斗破苍穹']
对应的切片输出语法为:
print(list2 [0:1000])
六、循环列表
有序容器的循环遍历分为直接遍历和间接遍历
1、直接遍历
例如:
list1 = ['A', 'B', 'C', 'D']
for i in list1:print(i)
输出结果为:A
B
C
D
2、间接遍历
for index in range(len(list1)):print(f'下标{index}--->元素{list1[index]}')for index in range(-len(list1), 0):print(f'下标{index}--->元素{list1[index]}')
输出结果为:
下标0--->元素A
下标1--->元素B
下标2--->元素C
下标3--->元素D
下标-4--->元素A
下标-3--->元素B
下标-2--->元素C
下标-1--->元素D
七、列表的增删改
1、增加
append:在列表的末尾追加一个元素
insert:在列表的任意位置添加一个元素
extend:将一个容器中的元素添加到列表中
例如:
list1 = []
print('---向列表中添加元素---')
print(list1)
list1.append('Python')
list1.append('Java')
print(list1)list1.insert(1, 'C++')
print(list1)
输出结果为:
---向列表中添加元素---
[]
['Python', 'Java']
['Python', 'C++', 'Java']
['Python', 'C++', 'Java', 'UI', 'C', 'Go', 'HTML', 'Python']
---删除列表中元素---
['Python', 'Java', 'UI', 'C', 'Go', 'HTML', 'Python']
['Python', 'Java', 'UI', 'Go', 'HTML', 'Python']
['Java', 'UI', 'Go', 'HTML', 'Python']
Java
['UI', 'Go', 'HTML', 'Python']
[]
2、修改
通过下标修改元素
例如:
list2 = ['UI', 'C', 'Go', 'HTML', 'Python']
list1.extend(list2)
print(list1)
输出结果为:['Python', 'Python', 'Java', 'UI', 'C', 'Go', 'HTML', 'Python']
3、删除
例如:
list1[1] = 'Python'
print(list1)print('---删除列表中元素---')
输出结果为:
—删除列表中元素—
['Python', 'Java', 'UI', 'C', 'Go', 'HTML', 'Python']
['Python', 'Java', 'UI', 'Go', 'HTML', 'Python']
['Java', 'UI', 'Go', 'HTML', 'Python']
del:
通过下标删除元素,下标超出范围报错
例如:
del list1[0]
print(list1)
输出:['Python', 'Java', 'UI', 'Go', 'HTML', 'Python']
remove:删除指定的元素,要删除的元素不存在,报错;
例如:
list1.remove('C')
print(list1)
list1.remove('Python')
print(list1)
输出为:['Java', 'UI', 'Go', 'HTML', 'Python']
Java
一次只删除一个元素,从左向右删除
pop:通过下标删除元素,下标超出范围报错;
pop删除的元素还可以被找到
例如:
content = list1.pop(0)
print(content)
print(list1)
输出为:['UI', 'Go', 'HTML', 'Python']
4、清空
例如:
list1.clear()
print(list1)
输出为:[]