1,切片:
就是将列表中的某个片段拿出来处理,这种切片的方式可以让我们从列表中取出多个元素。
2,口诀:左右空,取到头,左要取,右不取:
左右空,取到头:首先要明确列表的偏移量是从0位开始的,对应下面的截图,左右都为空的话,就是要取整个列表的值,也就是列表的第一种情况,左要取,右不取:从左边切片对应的偏移量取到右边相应偏移量的【前一位】,如第9行,左边对应偏移量1的元素是6,偏移量3对应的元素是8,右边应取的元素是偏移量的前一位,所以取的是[6,7],而不是[6,7,8]

2 .append()函数
(1).append函数给列表增加元素,append后面的括号里面只能增添一个参数(单个列表也会被视作一个元素)。
(2)列表中的元素可以是字符串,数字等,也可以是列表本身(即列表支持内部嵌套)。
(3).append括号里的函数,会添加在列表的末尾。
3、pop()函数
列表中的pop()函数,用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
可以将其理解为提取和删除的融合:①提取:取到元素,对列表没有影响;②删除:删除列表的元素。
而pop,则是同时做到取到元素,并且删除列表中的元素。
students.pop(0) 的结果等同于:
student1=students[0]#提取
students=students[1:]#删除
但是有个这样一个任务,一班走了个‘小张’去了二班,更新列表传统方法是:
1、t=一班列表取出小张
2、del把小张删除
3、二班列表加入小张
现在用pop方法就是把1和2合并一个语句解决两个语句的问题
举例:
你桌子上有一排好吃的,有【鸡腿、汉堡、烤串,炖肉】
1、你盛了一碗米饭放桌上,就成了【鸡腿、汉堡、烤串,炖肉,米饭】,这就是append
2、你把鸡腿拿起来吃了,就成了【汉堡、烤串,炖肉】,这就是del
3、你把鸡腿拿起来,放手里,没吃,桌子上还剩【汉堡、烤串,炖肉】,你手里是‘鸡腿’,这就是pop
4,第4关的狼问题
这道题属于列表里面的嵌套,第一个是个字典,以邻国公主后的那个逗号结尾的部分是列表的第0偏移量,第1个偏移量是丑小鸭,第2个是锡兵,第3个偏移量是睡美人,第4个偏移量是青蛙王子,狼是第5个偏移量里面的列表的第一个偏移量 通过字典的键取值就可以取出来了
1、townee是个列表,有6个值,狼在第6个里边,先得出townee[5]
2、townee[5]也是一个列表,有两个值,每个值是一个字典,狼在第2个字典里,得出townee[5][1]
3、因为townee[5][1]是个字典,反面角色的值是狼,所以可以得出townee[5][1][‘反面角色’]
5、第五关课后练习
student 1是怎么突然出现的
回答:就是先把students列表里的第一个元素提取出来赋值给student 1,后面再把它添加到students列表当最后一个元素
1.这是一个列表,对应列表中的元素应该用偏移量
2.怎么轮流坐第一排:去掉列表中的第一个元素,把第一个元素添加到列表的最后
3.涉及到的知识点:循环(次数一定可以用for循环)列表偏移量
怎样给列表添加元素
4.可以先新建一个列表student1=student[0]
然后重新赋值student1列表使用切片 然后再将student1添加至student1
6、如何跳出whileTrue死循环的方法:
1,鼠标点一下终端区,按ctrl+c(windows)command+c(mac)(记得多按几次)
(1) 遇到无法修改代码的情况:
l 刷新网页,然后修改代码
l 关闭页面重新进入,再去改代码
l
(2)可以修改代码的情况:
l 将代码while True改成while False.
l 将代码whileTrue加#注释跳过
l 故意写错代码(删掉一个括号),点击跳过
l 
7、坐前排的for和while循环
第一种:
students = [‘小明’,’小红’,’小刚’]
a = 0
while a <3:
student1 = students[0]
students = students[1:]
students.append(student1)
print(students)
a +=1
第二种:
students = [‘小明’,’小红’,’小刚’]
for i in range(3):
student1 = students[0]
students = students[1:]
students.append(student1)
print(students)
代码解释

8、浏览器的选择:
谷歌、360、火狐,、搜狗(兼容性比较好,可保证学习的顺畅性)
9、n+=1 的意思是n=n+1,!=的意思是不等于
10、演员的问题
movies = {
‘妖猫传’: [‘黄轩’, ‘染谷将太’],
‘无问西东’: [‘章子怡’, ‘王力宏’, ‘祖峰’],
‘超时空同居’: [‘雷佳音’, ‘佟丽娅’],
}
#定义一个movies的字典,字典里面的键名是电影名,值是一个列表包含有对应键名电影的演员
actor = input(‘你想查询哪个演员?’)#通过输入演员名给actor变量赋值
for movie in movies: # 用 for 遍历字典,这里遍历出来的是字典的键,也就是说是电影名
actors = movies[movie] # movies[movie]字典根据键取值,并且将取出的值赋值给了新的actors变量,
# 这里actors是字典的值,是一个列表
if actor in actors:
#判断一开始通过手动输入赋值的actor变量是不是在上一步取出的actors列表里面
print(actor+’出演了电影’ + movie)
#如果actor在根据电影取出的对应演员列表里就打印演员名出演了当前电影

11,打印次数

(1),for循环打印
l 首先需要明确for循环i的取值范围为{0,1,2,3}
l 当i=3时,先打印再退出循环,所以打印次数是0,1,2,3一共4次。
(2),while循环打印
l while循环,初始值是i=0,满足i<5,打印一次,i进行累加。
l i的取值范围为{0,1,2,}时都会打印“明日复明日”
l 当i=3时,就直接3break结束循环了
l 所以一共打印0,1,2一共3次
12,输入密码的正确代码
这道题最常见的犯错点在:
1,password单词拼写错误
2,816是整数,input输出的是字符串,数据类型不一致导致的报错。
816加了引号就是字符串形式了 ,input外部输入的也是字符串形式。 如果你把816的引号去掉 ,那就要在input前面加个int。这样就可以成功运行了
3,print不缩进,导致重复打印‘请尝试输入密码’这句话
13,如何重置课后练习
14,明明没有更新赋值,为什么两次list1输出不同????

因为list3=list1,此时电脑中指针会默认同步,若想输出list1原本的内容,需要在list3=list1语句前输出依次list1
15,为什么输出list3是none?

append()默认return none,所以赋值给的list3也是空值,当list3=list1.append(list2)
此时append函数返回值是默认值none,因此变量list3中的值为none,但list1的值会更新为list1与2的元素。
16,字典怎么单独取出键?

先看明白一下两种代码的区别
d = {‘小明’:’醋’,’小红’:’油’,’小白’:’盐’,’小张’:’米’}
for i in d:
print(i)
#显示结果为:取出键
#小明
#小红
#小白
#小张
d = {‘小明’:’醋’,’小红’:’油’,’小白’:’盐’,’小张’:’米’}
for i in d:
print(d[i])
#显示结果为:取出键对应的值
#醋
#油
#盐
#米
也就是说,用FOR…IN语句遍历时,遍历的是字典中的键。
17,为什么students=students[1:]这里是1不是0?

因为student1=students[0]是把第一个元素’小明’赋值给了student1这个变量,如果是students=students[0:],那么表示students从头取完了所有元素,此时的students仍然是[‘小明’,’小红’,’小刚’],那么在students.append(student1)把student1中的’小明’加进去之后,输出会变成[‘小明’,’小红’,’小刚’,’小明’],第一个小明必须删掉,所以我们在重新赋值students要从第二个元素’小红’开始取,再把小明加进后面。
18,i=i+1的顺序不一样,有什么区别???


建议打印两遍对照一下区别,图1解释:
程序从上往下运行,第一次循环的时候i=0,那么while i<101: 判断A是否可以进入循环,如果能进入循环,就进行下一步print(i*5)也就是等于0
然后进行完print()这一步后,会继续接着运行下一步i=i+1,那么当i=0时,i=i+1就是等于1
那么1就进入下一个循环,重复循环
图2解释:
程序从上往下运行,第一次循环的时候i=0,那么while i<101: 判断A是否可以进入循环,如果能进入循环,就进行下一步
i=i+1,那么当i=0时,i=i+1就是等于1 ,程序接着往下print(i 5)也就是等于5
接着循环当i=1时,那么while i<101: 判断i是否可以进入循环,如果能进入循环,就进行下一步
i=i+1,那么当i=1时,i=i+1就是等于2,程序接着往下print(i5)也就是等于10
19,break语句不是跳出循环吗??为什么输入了还会继续问???

因为break只存在于else语句中,也就是else判定执行时才会跳出循环,输入其他三种组合答案会返回循环(因为while True)
20,为什么两个都不认最后什么也不输出?用elif a == ‘不认’ and b == ‘不认’:与直接用else:有什么区别?

首先解决第二个问题吧,编程中的可能性与数学中的排列组合并不完全相同,使用else时,只要不是以上三种组合,都会判定为执行else语句,也就是说输入认罪啊,不认罪这些不规范回答,也会输出else语句。但使用elif a == ‘不认’ and b == ‘不认’:就不一样了,必须要严格的两个’不认’才会执行。所以这也就解释了第一个中为什么输入两个不认会什么都不输出,继续返回循环了,可能是因为你在输入不认时后面跟了个空格哦,’不认’!=’不认 ’哦!
21,为什么直接打印input函数不行???

input()返回值是none,input()函数return none,所以只能立刻对返回值进行输出,若不将这个返回值赋值给变量,就会消失,所以if相当于一直是none==’小龙女’的状态,不会被执行。
22.记录囚徒的选择的代码不理解
n就是用来计数 ,list_answer = [] 用来存储囚徒答案的一个列表。
print(‘第’ + str(n) + ‘对实验者选了最优解。’) # n从进入循环开始就是1,只有囚徒都不认罪的时候break生效,结束循环,因而最后一次n的值就是最优解的次数
print(‘第’ + str(i+1) + ‘对实验者的选择是:’ + str(list_answer[i])) # str(i+1)是因为i的值从0开始 ,list_answer[i]是正常的囚徒的选择,有这个变化是因为看代码的人对应的就是第1对开始
23.if条件判断问题,为什么输入24还是显示太小了?

条件语句中的guess是字符串型,if后的语句 字符串型的guess永远也不会等于整数型的secret,所以不会被执行。所以输入24也不满足条件,只会输出else。
23,del函数的用法和列表的切片用法
1.del函数是删除的意思,用法是del 列表名()
2.[a:b]就是删除索引a~b之间的元素
3.综上运用:del a[2:4],删除a列表里索引3~4的元素
24、%几种常见类型
%d 整数
%f float类型 默认输出小数部分是6位 如果想保留自己制定长度 那么使用%.位数(my_str = “我叫%s, 我今年%d岁, 我体重是%.2f” % (“三胖”, 30, 80.2))
%s 字符串
25、遇到学习页面不断在加载的情况怎么处理?
1,建议刷新或者或者关闭浏览器重新进入。
2,把浏览器换成360或者火狐。
26,计算字符串长度三根皮带,四斤大豆
27、九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print( ‘%d X %d = %d’ % (j,i,ij),end = ‘ ‘ )
print(‘ ‘)
https://shimo.im/docs/TqpRyKYxJRKvpgK9/ 《九九乘法表 解析》
for i in range(1,10)第一遍进入循环的时候就取1,然后进入下面第二个循环j就是range(1,2)就是1X1=1
for i in range(1,10)第二遍进入循环的时候就取2,然后进入下面第二个循环j就是range(1,3)就是1X1=1 1X2=2

为什么打印的是会对不齐
for i in range(1,10):
for j in range(1,i+1):
d = i j
print(‘%d*%d=%-2d’%(i,j,d),end = ‘ ‘ )
print()
#因为当乘法计算到两位数的时候,就无法跟前面一位数的等式对齐,如果要对齐的话可以用以上代码试试
28、囚徒困境字典做法
# 需要的变量放到开头,明显一些。
i=0
data={}
while True:
a = input(‘A,你认罪吗?请回答认罪或者不认:’)
b = input(‘B,你认罪吗?请回答认罪或者不认:’)
# 需要将每一对实验者的选择存起来。
i=i+1
data[‘第’+str(i)+’对’]=a+’;’+b
if a == ‘认罪’ and b == ‘认罪’:
print(‘两人都得判10年,唉’)
elif a == ‘不认’ and b == ‘认罪’:
print(‘A判20年,B判1年,唉’)
elif a == ‘认罪’ and b == ‘不认’:
print(‘A判1年,B判20年’)
else:
print(‘都判3年,太棒了’)
break
# 打印是第几对实验者做出了最优选择。
print(‘第’ + str(i) + ‘对实验者选了最优解。’)
# 通过循环打印每一对实验者的选择。
print(data)
