day4-循环练习+list

01回顾

  • python 交换两个数的数值

    # python交换数据
    a = 0
    b = 6
    a, b = b, a
    
  • 斐波那契数列

    # 递归函数调用输出第N个斐波那契数列
    def Fib(n):
        if n == 1 or n == 2:
            return 1
        else:
            return (Fib(n-1) + Fib(n-2))
    
    
    print(Fib(5))
    
    # python斐波那契
    pre1 = 1
    pre2 = 1
    n = 6
    for x in range(n-3):
        pre1, pre2 = pre2, pre1+pre2
    print(pre1++pre2)
    

02list列表

  • 什么是列表
    • 列表是容器型属性类型(是序列); 将[] 作为容器标志,里面多个元素用逗号隔开 [数据1,数据2,…]
    • 列表是可变的:列表中元素的顺序可变,个数可变,值可变
    • 列表是有序的:支持下标操作,下标是顺序的标志
    • 列表的元素:任何类型的数据都可以作为列表的元素,同一个列表中不同的元素的类型可以不同(区别于C)
list1 = []
print(list1, type(list1))  # [] <class 'list'>

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}]  # 支持多类型   元祖、字典
print(list2)

a = 100
# list3 =[20, 4, a*3, a<5,a=5]   # 赋值语句不可
  • 获取列表元素(查)

    • 1)获取单个元素

      • 语法:列表[下标] - 获取列表中指定下标对应的元素

      • 说明:

        • 列表 - 保存列表的变量,也可以直接写列表

        • [] - 固定写法

        • 下标 - 索引:元素在有序序列中的位置信息

          ​ 元素从前往后对应的下标值从0 开始,从后往前从-1开始依次减少

          num = [19, 90, 87, 67, 40]
          # 下标  0  1  2  3  4
          #      -5 -4 -3 -2 -1
          print(num[2])  # 87
          print(num[-3])  # 87
          
    • 2)遍历 - 一个一个的获取列表中所有的元素

      • 方法一:
        • for 变量 in 列表:
          循环体
      • 方法二: 通过获取所有元素的下标来获取元素
        • for 下标 in range(列表长度):
          列表[下标]
      • len(序列) - 获取序列中元素的个数
      for index in range(len(num)):
          print(index, num[index])
      
      for index in range(-1, -len(num) - 1, -1):
          print(index, num[index])
      
      # 练习
      count = 0
      scores=[78,67,56,90,78,23,91]
      for i in scores:
          if i < 60:
              count += 1
      print(count)
      
    • 3)切片 - 同时获取多个元素

      • a .基础语法

        • 列表[开始下标:结束下标:步长] 从开始下标开始,结束下标取不到
        • 如果步长为正:从开始下标开始到结束下标前,从前往后取,取的时候步长为指定步长
        • 如果步长为负:从开始下标到结束下标前,从后往前取,取的时候步长为指定步长
      • b . 省略语法

        • 1)省略步长:列表[开始下标:结束下标] - 相当于步长为1
        • 2)省略开始下标:列表[:结束下标:步长] / 列表[:结束下标]
        • 3)省略结束下标:列表[开始下标::步长] / 列表[开始下标:]
        
        movies = ['vv', 'vd', 'sdcs', 'sdvs', 'fdvd', 'evfvd', 'eger', 'chgv']
        print(movies[1:-2])  # ['vd', 'sdcs', 'sdvs', 'fdvd', 'evfvd']
        print(movies[1:-2:2])  # ['vd', 'sdvs', 'evfvd']
        print(movies[1:-2:-2])  # [] 空 步长为负,从前向后,矛盾
        print(movies[-2:1:1])   # [] 空 步长为正,从后向前,矛盾
        print(movies[-2:1:-2])  # ['eger', 'fdvd', 'sdcs']
        
        print(movies[1:-1])  # 去头去尾
        print(movies[1:])   #['vd', 'sdcs', 'sdvs', 'fdvd', 'evfvd', 'eger', 'chgv']
        print(movies[3::-1])  # ['sdvs', 'sdcs', 'vd', 'vv']
        print(movies[:3])  # ['vv', 'vd', 'sdcs']
        print(movies[::-2])  # ['chgv', 'evfvd', 'sdvs', 'vd']
        
        

03作业

  1. 判断101-200之间有多少个素数,并输出所有素数。

    count = 0
    for num in range(101,200):
        # print(num)
        for i in range(2, int(num**0.5)+1):         #优化范围  开方+1
            if (num % i == 0):
                # print(num,'不是素数')
                break
        else:
            count +=1
            print(num,'是素数')
    print('101-200之间一共有:', count,'个素数')
    
    
  2. 求整数1~100的累加值,但要求跳过所有个位为3的数。

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

    fenzi = 2
    fenmu = 1
    
    for i in range(20):
        temp = fenzi / fenmu
        fenzi,fenmu = fenzi+fenmu,fenzi
    print(temp)
    
  4. 写程序计算 n 的阶乘 n! 的结果

    n = int(input('请输入n:'))
    a = 1
    for i in range(1,n+1):
        a *= i
    print(n,'的阶乘为:',a)
    
  5. 求1+2!+3!+…+20!的和

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

    例如:a为3, n为5的时候: 3 + 33 + 333 + 3333 + 33333

  7. 控制台输出三角形

    a.根据n的值的不同,输出相应的形状
    n = 5时             n = 4
    *****               ****
    ****                ***
    ***                 **
    **                  *
    *
    
    # 程序a
    n = int(input('请输入n:'))
    for i in range(n):
        for j in range(n - i):
            print('*',end='')
        print()
        
        
        
        
    b.根据n的值的不同,输出相应的形状(n为奇数)
    n = 5               n = 7
      *                    *
     ***                  ***
    *****                *****
                        *******
    
    #程序b
    n = int(input('请输入n:'))
    for i in range((n+1)//2):
        for j in range((n+1)//2 - i):
            print(' ',end='')
        for k in range(2*i+1):
            print('*',end='')
        print()
    
    
    
    c. 根据n的值的不同,输出相应的形状
    n = 4
       1
      121
     12321
    1234321
    
    n = 5
        1
       121
      12321
     1234321
    123454321
    ``
    
         
    
    
    
    
    
    
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值