day-4 循环练习-4.29

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()
  1. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮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字仇杀队', '复仇者联盟']
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值