day-4 循环练习-4.29
1.作业
1)输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for i in range(1, 10):
for j in range(1, i + 1):
print(j, 'x', i, '=', j*i,end=' ')
print()
- 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for big in range(1, 100//3+1):
for middle in range(1, 51):
for small in range(2, 101, 2):
if big * 3 + middle * 2 + small/2 == 100 and big + middle + small == 100:
print('大马:', big, '中马:', middle, '小马:', small)
# 优化
for big in range(1, 100//3+1):
for middle in range(1, 51):
small = 100 - big - middle
if small % 2:
continue
if big * 3 + middle * 2 + small / 2 == 100:
print('大马:', big, '中马:', middle, '小马:', small)
2.列表基础
1)什么是列表(list)
列表是容器型属性类型(是序列);将[]作为容器标志,里面多个元素用逗号隔开:[元素1,元素2,元素3]
列表是可变的(指的是列表中元素的个数、元素顺序和元素的值可变);列表是有序的(支持下标操作,下标是顺序的标志)
列表的元素:任何类型的数据都可以作为列表的元素,同一个列表中不同的元素的类型可以不同
# 列表有序的
print([1, 2, 3] == [3, 2, 1]) # False
print({1, 2, 3} == {3, 2, 1}) # True(集合无序)
# 列表中元素可以是任何数据类型
list2 = [10, 23.8, 'abc', True, [1, 2], (10, 20), {'a': 10}]
a = 100
list3 =[20, a, a*3, a < 5]
print(list3) # [20, 100, 300, False]
2)获取列表元素(查)
-
获取单个元素
语法:
列表[下标] - 获取列表中指定下标对应的元素说明:
列表 - 可以是保存列表的变量也可以直接写列表
[] - 固定写法
下标 - 又叫索引;下标就是元素在有序序列中的位置信息。
元素从前往后对应的下标值从0开始依次增加;
元素从后往前对应的下标值从-1开始依次减小。names = ['百里守约', '瑶', '李白', '后裔', '曜'] print(names[1]) # 瑶 print(names[-4]) # 瑶 print(names[0]) # 百里守约 print(names[-2]) # 后裔 # print(names[5]) # IndexError: list index out of range
-
遍历 - 一个一个的获取列表中所有的元素
方法一: - 直接获取元素
for 变量 in 列表:
循环体方法二: - 通过获取到所有元素的下标来获取元素
for 下标 in range(列表长度):
列表[下标]
len(序列) - 获取序列中元素的个数
# 练习:统计scores中不及格学生的个数
scores = [78, 67, 56, 90, 78, 23, 91]
count = 0
for score in scores:
if score < 60:
count += 1
print(count)
names = ['百里守约', '瑶', '李白', '后裔', '曜']
for index in range(len(names)):
print(index, names[index])
for index in range(-1, -len(names)-1, -1):
print(index, names[index])
-
切片 - 同时获取多个元素
a.基础语法
列表[开始下标:结束下标:步长]如果步长为正:从开始下标开始到结束下标前,从前往后取,取得时候步长为指定步长
如果步长为负:从开始下标开始到结束下标前,从后往前取,取得时候步长为指定步长b.省略语法
1)省略步长:列表[开始下标:结束下标] - 相当于步长为1
2)省略开始下标:列表[:结束下标:步长] / 列表[:结束下标]
3) 省略结束下标:列表[开始下标::步长] / 列表[开始下标:]movies = ['猫鼠游戏', '复仇者联盟', '流浪地球', 'V字仇杀队', '泰坦尼克号', '寂静岭', '生化危机', '肖申克的救赎'] print(movies[1:5:1]) # ['复仇者联盟', '流浪地球', 'V字仇杀队', '泰坦尼克号'] print(movies[1:5:2]) # ['复仇者联盟', 'V字仇杀队'] print(movies[1:5:-1]) # [] print(movies[-3:2:1]) # [] print(movies[-3:2:-2]) # ['寂静岭', 'V字仇杀队'] print(movies[3:-2:1]) # ['V字仇杀队', '泰坦尼克号', '寂静岭'] print(movies[1:-1]) # ['复仇者联盟', '流浪地球', 'V字仇杀队', '泰坦尼克号', '寂静岭', '生化危机'] print(movies[2:]) # ['流浪地球', 'V字仇杀队', '泰坦尼克号', '寂静岭', '生化危机', '肖申克的救赎'] print(movies[3::-1]) # ['V字仇杀队', '流浪地球', '复仇者联盟', '猫鼠游戏'] print(movies[:3]) # ['猫鼠游戏', '复仇者联盟', '流浪地球'] print(movies[::-2]) # ['肖申克的救赎', '寂静岭', 'V字仇杀队', '复仇者联盟']