学习Python的D5循环嵌套和列表

本文详细介绍了Python编程中的循环结构,包括循环嵌套的执行原理,并通过实例展示了列表这一容器型数据类型的使用,如创建、访问、遍历、添加元素等操作。此外,还提供了多个编程题目,涵盖了列表操作、条件判断、循环控制、数学计算等多个方面,旨在巩固读者对Python编程基础的理解和应用。
摘要由CSDN通过智能技术生成

循环练习和列表

一.循环嵌套

  • 循环嵌套的执行原则:外循环一次,内循环完整
for x in range(5):
    for y in range(2, 5):
        print(x, y)

二.认识列表

  • 容器的基本特征:

    • 一个容器型的数据可以同时保存多个其他的数据
  • 元素:

    • 容器中每一个独立的数据就是一个元素
  • 1.什么是列表

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

  • len(列表) - 获取列表中元素的个数
      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
    
  • 列表可以同时保存多个数据
    list3 = [89, 90, 76, 99, 58]
    print(list3)
    
    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]
    ]
    
  • 2.查:获取元素

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

      获取单个元素
      '''
      语法:列表[下标]       
      功能:获取列表中指定下标对应的元素
      说明:
      列表      -      任何结果是列表的表达式,比如:保存列表的变量、具体的列表值等
      []       -       固定写法
      下标      -      下标又叫索引,是元素在有序序列中位置信息。
                      Python中有序序列中每个元素都有两组下标值,分别是:从前往后从0开始递增的下标值;从后往前从-1开始递减的下标值
      注意:下标不能越界
      '''
      
    • 遍历

      '''
      方式1 - 直接获取列表中的每个元素
      for 元素 in 列表:
          循环体
          
      方式2 - 先获取到每个元素的下标值,然后通过下标再获取元素
      for 下标 in range(len(列表)):
          循环体
          
      for 下标 in range(-1, -len(列表)-1, -1):
          循环体
          
      range(len(列表)) == range(列表中元素的个数)
      
      方式3  - 同时获取列表中每个元素和元素对应的下标
      for 下标, 元素 in enumerate(列表):
          循环体
      '''
      

三、添加元素

  • 1.增:添加元素

    • 添加单个元素

      列表.append(元素)   -   在列表的最后添加一个元素
      列表.insert(下标, 元素)  - 在指定下标对应的元素前插入指定元素
      
  • 2.批量增加

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

第一周作业

一、选择题

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

    A. abc

    B. Npc

    C. 1name

    D ab_cd

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

    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的是?

    A.

    print('100 - 50')
    

    B.

    print(100 - 50)
    
  5. 关于引号,下面选项中使用正确的d是? 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 x in range(5)
    	print ('you see see ,one day day')
    
  3. 写代码打印数字 11、12、13、… 21

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

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

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

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

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

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

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

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

    n = 0
    for x in range(0, 1001, 3):
        n += 1
    print(n)
        
    
  12. 判断101-200之间有多少个素数,并输出所有素数。

    a = 0
    for n in range(100, 201):
        for x in range(2, n):
            if n % x == 0:
                break
        else:
            a += 1
            print(n)
    print('有', a, '个')
    
  13. 求整数1~100的累加值,但要求跳过所有个位为3的数。

    a = 0
    for x in range(1, 101):
        if x % 10 != 3:
            a += x
    print(a)
    
  14. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数

    pre1 = 1
    pre2 = 1
    n = 20
    for x in range(n):
        pre1, pre2 = pre2, pre1 + pre2
    print(pre2, '/', pre1)
    
  15. 写程序计算 n 的阶乘 n! 的结

    n = 4
    for x in range(1, n):
        n *= x
        if n == 1:
            print('1')
            break
    print(n)
    
  16. 求1+2!+3!+…+20!的和

    a = 1
    b = 0
    for x in range(1, 21):
        a *= x
        b += a
    print(b)
    
  17. 写程序求表达式 a + aa + aaa + aaaa+ … 的结果,其中a是1~9的数字,求和的项数用n来控制。(a和n可以用变量来表示)

    a, n, c, b, = 3, 5, 0, 0
    for n in range(1, n+1):
        b += ((a-1) * (10 ** (n-1))) + (10 ** (n-1))
        c += b
    print(c)
    
  18. 控制台输出三角形

    a.根据n的值的不同,输出相应的形状
    n = 5时             n = 4
    *****               ****
    ****                ***
    ***                 **
    **                  *
    *
    
    b.根据n的值的不同,输出相应的形状(n为奇数)
    n = 5               n = 7
      *                    *
     ***                  ***
    *****                *****
                        *******
    
    c. 根据n的值的不同,输出相应的形状
    n = 4
       1
      121
     12321
    1234321
    
    n = 5
        1
       121
      12321
     1234321
    123454321
    
  19. 小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元正好花掉,可有哪些购买结合?

    for zao in range(50):
        for ya in range(20):
            for xi in range(100 // 15 + 1):
                if xi * 15 + ya * 5 + zao * 2 == 100:
                    print(xi, ya, zao)
    
  20. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?

    n = 0
    while True:
        n += 1
        if (0.08 * (2 ** n)) >= 8848130:
            print(n)
            break
    
  21. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    pre1 = 2
    pre2 = 2
    n = 3
    if n == 1 or n == 2:
        print(2)
    else:
        for x in range(n-3):
            pre1, pre2 = pre2, pre1 + pre2
        print(pre1 + pre2)
    
  22. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。

  23. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值

    n = 7890
    for a in range(1, 5):
        b = (((n % (10 ** a)) // (10 ** (a - 1))) + 5) % 10
        print(b, end='')
    
  24. 本金10000元存入银行,年利率是千分之三。每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少。

    n = 5
    a = 10000
    for n in range(1, 6):
        a += 0.003 * a
        print(a)
    
  25. 输入一个整数,计算它各位上数字的和。(注意:输入的整数可以是任意位)

  26. 求两个数的最大公约数和最小公倍数。(提示:公约数一定小于等于两数中的小的那个数,且能同时被两个数整除;公倍数一定大于等于两数中的大数,且是大数的倍数又能被两数中的小数整除)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值