day5-循环练习和列表

循环嵌套

循环嵌套的执行原则:外循环一次,内循环完成

for x in range(5):
    for y in range(2, 5):
        print(x, y)

x取值范围:0,1,2,3,4
第1次 x=0: 执行循环体对应的for循环,y取值范围是:2,3,4
第1次 y=2:print(x,y) ->print(0,2)
第2次 y=3:print(x,y) ->print(0,3)
第3次 y=4:print(x,y) ->print(0,4)
内循环结束
第2次 x=1: 执行循环体对应的for循环,y取值范围是:2,3,4
第1次 y=2:print(x,y) ->print(1,2)
第2次 y=3:print(x,y) ->print(2,3)
第3次 y=4:print(x,y) ->print(2,4)
内循环结束

练习:

输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
行的取值(第二个乘数):1 - 9
列的取值(第一个乘数):1 - 行数
row = 1 - 9
col = 1 - col

for row in range(1, 10):
    for col in range(1, row+1):
        print(col, '×', row, '=', row*col, end='  ', sep='')
    print()

这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

for big in range(100//3+1):
    for middle in range(50):
        small = 100 - big - middle
        if big * 3 + middle * 2 + small/2 == 100:
            print(big, middle, small)

猜数字游戏

from random import randint
number = randint(1, 100)  # 产生1-100的随机数
count = 0
while True:
    value = int(input('请输入一个整数(0~100):'))  # 玩家输入
    count += 1
    if value == number:
        print('恭喜你猜对了!')
        break
    if value > number:
        print('大了,再小点!')
    else:
        print('小了,再大点!')
if count < 5:
    print('猜中只用了', count, '次!棒棒哒~')
elif count < 10:
    print('总共猜了', count, '次!平凡如你!')
else:
    print('天才!你猜了', count, '次!')

认识列表

思考:定义变量保存一个班所有学生的成绩

stu1 = 90
stu2 = 78
stu3 = 55
stu4 = 60
...
print(stu1 + stu2 + stu3 + ...)
scores = [90, 78, 55, 60]
print(sum(scores)/len(scores))

容器的基本特征:一个容器型的数据可以同时保存多个其他的数据
元素:容器中每一个独立的数据就是一个元素

1.什么是列表(list)

1)列表长什么样子:列表是容器型数据类型(序列),将[]作为容器的标志,里面多个元素用逗号隔开:[元素1,元素2,元素3,…]
2)列表的特点:列表是可变的(元素的个数、值和顺序可变) - 增、删、改;列表是有序的 - 支持下标操作
3)列表对元素的要求:没有要求(不管什么类型的数据都可以作为列表的元素)

1)空列表

list1 = []
list2 = [ ]
print(type(list1), type(list2))  # <class 'list'> <class 'list'>
print(bool(list1), bool(list2))  # False False
print(len(list1), len(list2))  # 0 0

2)列表可以同时保存多个数据

list3 = [89, 90, 76, 99, 58]
print(list3)

list4 = ['小明', 18, '女', 100, True]
print(list4)

list5 = [10, 12.5, True, 'abc', [1, 0], {'a': 10}, (20, 9), {20, 9}, lambda x: x*2]
print(list5)

list6 = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
print(len(list6))  # 3

2.查 - 获取元素

查分为三种情况:获取单个元素、切片、遍历(一个一个的取)
1)获取单个元素

语法:列表[下标]
功能:获取列表中指定下标对应的元素
说明:
列表   -   任何结果是列表的表达式,比如:保存列表的变量、具体的列表值等 
[]    -   固定写法
下标   -   下标又叫索引,是元素在有序序列中位置信息
           Python中有序序列中每个元素都有两组下标值,分别是:从前往后从0开始递增的下标值;从后往前从-1开始递减的下标值
注意:下标不能越界
list3 = [89, 90, 76, 99, 58]
list3[下标]
[89, 90, 76, 99, 58][下标]
names = ['甄姬', '貂蝉', '韩信', '吕布', '赵云', '后裔', '鲁班', '狄仁杰']
print(names[1])  # 貂蝉
print(names[-1])  # 狄仁杰

2)遍历

方式1 - 直接获取列表中的每个元素
for 元素 in 列表:
    循环体

方式2 - 先获取到每个元素的下标值,然后通过下标再获取元素
for 下标 in range(len(列表))
    循环体 

for 下标 in range(-1-len(列表)-1-1)
    循环体

range(len(列表)) == range(列表中元素的个数)

方法3 - 同时获取列表中每个元素和元素对应的下标
for 下标,元素 in enumerate(列表):
    循环体
for x in names:
    print(x)

for index in range(len(names)):
    print(index, names[index])

for index, item in enumerate(names):
    print(index, item)

练习1: 统计不及格人数

scores = [89, 67, 56, 90, 98, 30, 78, 51, 99]
count = 0
for i in scores:
    if i < 60:
        count += 1
print(count)

练习2:统计列表中整数的个数

list7 = [89, 9.9, 'abc', True, 'abc', '10', 81, 90, 23]
count = 0
for i in list7:
    if type(i) == int:
        count += 1
print(count)

练习3:求nums中所有偶数的和

nums = [89, 67, 56, 90, 98, 30, 78, 51, 99]
sum1 = 0
for i in nums:
    if i % 2 == 0:
        sum1 += i
print(sum1)

添加元素

1.增 - 添加元素

1)添加单个元素

列表.append(元素)   -   在列表的最后添加一个元素
列表.insert(下标,元素)   -   在指定下标对应的元素前插入指定元素
movies = ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']
print(movies)  # ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']

movies.append('肖申克的救赎')
print(movies)  # '五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪', '肖申克的救赎']

movies.insert(2, '沉默的羔羊')
print(movies)

2)批量添加

列表1.extend(列表2) - 将列表2元素全部添加到列表1的后面

movies.extend(['让子弹飞', '触不可及', 'V字仇杀队'])
print(movies)

练习:将scores中所有的及格的分数提取出来

scores = [89, 67, 56, 90, 98, 30, 78, 51, 99]
scores2 = []
for i in scores:
    if i >= 60:
        scores2.append(i)
print(scores2)

第一周作业

一、选择题

  1. 下列变量名中不合法的是?(C)

    A. abc

    B. Npc

    C. 1name

    D ab_cd

  2. 下列选项中不属于关键字的是?(B)

    A. and

    B. print

    C. True

    D. in

  3. 下面哪个选项对应的代码写法是正确的?(C)

    A.

    print('Python')
      print('新手村')
    

    B.

    print('Python') print('新手村')
    

    C.

    print('Python')
    print('新手村')
    

    D.

    print('Python''新手村')
    
  4. 下面选项中能打印出50的是?(B)

    A.

    print('100 - 50')
    

    B.

    print(100 - 50)
    
  5. 关于引号,下面选项中使用正确的是?(D)

    A.

    print('hello)
    

    B.

    print("hello')
    

    C.

    print(“hello”)
    

    D.

    print("hello")
    

二、编程题

  1. 写代码在控制台打印 good good study, day day up!

    print('good good study, day day up!')
    
  2. 写代码在控制台打印5次 you see see, one day day!

    for i in range(5):
        print('you see see, one day day!')
    
  3. 写代码打印数字 11、12、13、… 21

    for i in range(11, 22):
        print(i)
    
  4. 写代码打印数字 11,13,15,17,…99

    for i in range(11, 100, 2):
        print(i)
    
  5. 写代码打印数字:10、9、8、7、6、5

    for i in range(10, 4, -1):
        print(i)
    
  6. 写代码计算:1+2+3+4+…+20 的和

    sum1 = 0
    for i in range(21):
        sum1 += i
    print(sum1)
    
  7. 写代码计算100以内所有偶数的和

    sum1 = 0
    for i in range(2, 100, 2):
        sum1 += i
    print(sum1)
    
  8. 写代码统计100~200中个位数是3的数的个数

    count = 0
    for i in range(103, 200, 10):
        count += 1
    print(count)
    
  9. 写代码计算2*3*4*5*...*9的结果

    res = 1
    for i in range(2, 10):
        res *= i
    print(res)
    
  10. 输入一个数,如果输入的数是偶数就打印偶数否则打印奇数

    num = int(input('请输入一个数:'))
    if num % 2 == 0:
        print('偶数')
    else:
        print('奇数')
    
  11. 统计1000以内能被3整除但是不能被5整除的数的个数。

    count = 0
    for i in range(3, 1000, 3):
        if i % 5 != 0:
            count += 1
    print(count)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值