未完待续,持续更新中...
99**2 = 99^2
一、print()函数
二、数据类型
三、条件判断
四、input()函数
五、列表和字典+元组
列表list
1、格式:roommates=['LY','HZY','CQR','PQJ','ZYL'] #roommates为列表名
注意:(1)元素序号从0开始;
(2)列表中的元素可以是字符串、数字和列表本身(支持镶嵌);
(3)roommates[-2] 指倒数第二个元素,即PQJ
2、提取元素:左右空,取到头;左取右不取。
roommates[0] 'LY'
roommates[:] 全部
roommates[2:] 'CQR','PQJ','ZYL',从序号2到最后
roommates=[:2] 'LY','HZY',从第一个到序号1
3、增加元素:roommates.append('YZN')
append函数后的参数要满足数量为1(单个列表也可视为1个元素)
append添加的元素会在列表的末尾
4、删除元素:del roommates[] #类提取
字典dict
1、格式:scores={'小明':90, '小红':98, '小刚':90} # 字典名={'键1':值1, '键2':值2, '键3':值1}
键key具有唯一性,值value则可重复,一组键和值构成一个键值对。
2、取:a=scores['小红'] # a=90
3、删:del 字典名[键]
4、增:字典名[键] = 值
列表和字典的异同
异:列表有序,要用偏移量定位;字典无序,便通过唯一的键来取值。
同:1、如果要修改元素,都可用赋值语句来完成。2、支持任意嵌套。除之前学过的数据类型外,列表可嵌套其他列表和字典,字典也可嵌套其他字典和列表。
# 字典嵌套列表,先找到字典的键对应的列表,再判断列表中要取出元素的偏移量
students = {
'第一组':['小明','小红','小刚','小美'],
'第二组':['小强','小兰','小伟','小芳']
}
print(students['第一组'][3])
#取出'第一组'对应列表偏移量为3的元素,即'小美'
#列表嵌套字典,先判断字典是列表的第几个元素,再找出要取出的值相对应的键
scores = [
{'小明':95,'小红':90,'小刚':100,'小美':85},
{'小强':99,'小兰':89,'小伟':93,'小芳':88}
]
print(scores[1]['小强'])
#先定位到列表偏移量为1的元素,即第二个字典,再取出字典里键为'小强'对应的值,即99。
元组tuple
元组和列表都是序列,提取的方式也是偏移量,如 tuple1[1]、tuple1[1:]。
元组也支持任意的嵌套。
合并列表
用append函数 & 用extend函数
list1 = [91, 95, 97, 99]
list2 = [92, 93, 96, 98]
for i in list2:
list1.append(i)
print(list1)
list1 = [91, 95, 97, 99]
list2 = [92, 93, 96, 98]
# 把 A 组成绩赋值给一个新列表,用来存合并的成绩——这个细节要注意!
list3 =list1
list3.extend(list2)
print(list3)
列表排序
list3.sort()
练习:计算平均分,以及把低于平均分的成绩也打印出来。
使用数学知识 average = sum/len(score)
scores=[91, 95, 97, 99, 92, 93, 96, 98]
sum=0
for score in scores:
sum = sum + score
average = sum/len(scores)
print('平均成绩是:{}'.format(average))
使用拓展程序库numpy
import numpy as np
scores=[91, 95, 97, 99, 92, 93, 96, 98]
score=[]
average=np.mean(scores)
print('平均分为{}'.format(average))
for i in scores:
if i<average:
score.append(i)
continue
print('低于平均分的为{}'.format(score))
六、循环
for...in...(一群排队办业务的人)
in表示从“一群排队办业务的人”(字符串、列表、字典等)中依次取值,在循环的过程中,“一群排队办业务的人”会被依次取出,然后走进房间i去办理业务。
for i in [1,2,3,4,5]:
print(i) #依次打印出1 2 3 4 5 ,此过程被称为遍历
print('事情全部办完了!现在留在空房间里的人是谁?')
print(i) #会打印出5
i表示元素item,可以为字典、列表和字符串'吴承恩'(会依次打印出吴、承、恩),但不能为整数、浮点数。
for循环(办事流程)
for i in [1,2,3,4,5]:
print(i*5)
此处流程很简单,都是print(i*5)。然后在i=1的情况下,执行一遍流程;在i=2的情况下,再执行一遍流程……一直执行到i=5,也就把这群人的事情全部办完了。
range()函数
使用range(x)函数,可以生成一个从0到x-1的整数序列。
使用range(a,b) 函数,可以生成了一个取头不取尾的整数序列。
使用range(a,b,c)函数,可以生成从a到b(取头不取尾),数的间隔为c的整数序列,c不填时默认间隔为1。
while循环
“在一定的条件下放行,然后按照流程办事”
for和while的异同
循环的工作量是否确定
工作量确定的时候,我们就可以让for循环来完成重复性工作;
工作量不确定时,可以让while循环来工作。
练习(pop函数)
小明、小红、小刚是同班同学,且坐在同一排,分别坐在第一位、第二位、第三位。由于他们的身高都差不多,所以,老师计划让他们三个轮流坐在第一位。每次换座位的时候,第一位变第三位,后面两位都往前一位。
w1用for循环实现:
students = ['小明','小红','小刚']
for i in range(3):
student1 = students[0]
students = students[1:]
students.append(student1)
print(students)
w2用pop()函数实验
列表名.pop():移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。(移除:取到元素+删除列表中的元素)
students = ['小明','小红','小刚']
for i in range(3):
student1=students.pop(0)
students.append(student1)
print(students)
七、布尔值+新语句
布尔运算与布尔值
1、计算机用数据做判断的过程
用数值做逻辑判断的过程叫做布尔运算,布尔运算会产生布尔值。布尔值分为TURE和FALSE,它门像开关一样决定if语句和while循环语句是否运行。
2、布尔运算的三种方式
1)两个数值作比较
比较运算符:等于==,不等于!=,大于>,小于<,大于等于>=,小于等于<=
2)直接用数值做运算
python中的真假判断:(左假右真)
False True
0 任意整数或浮点数
‘’(空字符串) ‘编程’
[] [1,2,3]
{} {1:'春风',2:'秋风'}
None
可以使用bool()函数来查看一个数据会被判断为真True还是假False。
3)布尔值之间的运算。
and、or、not
in、not in :列表中是否存在某个元素、字典中是否存在某个【键】
break、continue、pass、else语句
break:从循环内跳出(必须和if语句连用)
while True:
print('上供一对童男童女')
t = input('孙悟空来了吗')
if t == '来了':
break
print('孙悟空制服了鲤鱼精,陈家庄再也不用上供童男童女了')
continue:将跳过之后的代码,直接回到循环的开始(必须和if语句连用)
for i in range(5):
print('明日复明日')
if i==3: # 当i等于3的时候触发
continue # 回到循环开头
print('这句话在i等于3的时候打印不出来')
#result
明日复明日
这句话在i等于3的时候打印不出来
明日复明日
这句话在i等于3的时候打印不出来
明日复明日
这句话在i等于3的时候打印不出来
明日复明日
明日复明日
这句话在i等于3的时候打印不出来
pass:什么都不做(常用在if语句下)
a = int(input('请输入一个整数:'))
if a>100:
pass
else:
print('你输入了一个小于100的数字')
else:用在循环语句后,如果正常结束循环,就执行else语句(没有遇到break)
i = 0
while i<5:
a = int(input('请输入0结束循环,你有5次机会:'))
i = i+1
if a == 0:
print('你触发了break语句,导致else语句不会生效。')
break
else:
print('5次循环你都错过了,else语句生效了。')
练习
1)下面,会将电影的影片名和主演放在字典里,需要你补充一些代码,让其他人只要输入演员名,就打印出:××出演了电影××。
movies = {
'妖猫传':['黄轩','染谷将太'],
'无问西东':['章子怡','王力宏','祖峰'],
'超时空同居':['雷佳音','佟丽娅'],
}
actor=input('你想查询哪个演员?')
for movie in movies:
actors=movies[movie]
if actor in actors:
print(actor+'出演了'+movie)
2)“囚徒困境”+社会实验
让程序收集两名囚犯的认罪情况,进而决定他们的判决:
两人都认罪,则各判10年;一个认罪一个抵赖,则前者判1年,后者判20年;两人都抵赖,各判3年。只有两人都不认罪,程序才会停止。
现在有一个社会学家,在不同的人群中做这个实验,一旦遇到都不认罪的情况,就停止该人群中的实验。同时,他希望程序能记录每一对实验者的选择,以及记录第几对实验者都选择不认罪。请你帮帮他吧。
n=0
list_answer=[]
while True:
n+=1
a=input('A,你认罪吗?请回答认罪或者不认罪')
b=input('B,你认罪吗?请回答认罪或者不认罪')
list_answer.append([a,b])
if a=='认罪' and b=='认罪':
print('A和B各判10年')
elif a=='认罪' and b=='不认罪':
print('A判1年,B判20年')
elif b=='认罪' and a=='不认罪':
print('B判1年,A判20年')
else:
print('A和B各判3年')
break
print('第'+str(n)+'对实验者选择了最优解')
for i in range(n):
print('第'+str(i+1)+'对实验者的选择是'+str(list_answer[i]))