美文网首页
day 5 作业

day 5 作业

作者: 憨猜猜 | 来源:发表于2018-12-28 20:51 被阅读0次

    基础

    读程序,总结程序的功能:

    1.

    numbers=1
    
    for  i in range(0,20):
          numbers*=2
    print(numbers)
    
    numbers=1 i=0 numbers=numbers2=1*2=2=2^1
    numbers=2^1 i=1 numbers=numbers2=2*2=4=2^2
    numbers=2^2 i=2 numbers=numbers2=4*2=8=2^3
    numbers=2^3 i=3 numbers=numbers2=8*2=16=2^4
    ..........
    numbers=2^19 i=19 numbers=numbers*2=2^20
    求2的20次方
    

    2.

    summation=0
    num=1
    while num<=100:
    if (num%3==0 or num%7==0) and num%21!=0:
        summation += 1
    num+=1
    print(summation)
    
    summation=0   num=1  num+=1+1=2
    summation=0   num = 2   num +=2+1= 3
    summation = 0  num = 3 满足if语句 summation+=1=1  num+= 3+1 =4
    summation =1  num = 4   num+=4+1 = 5
    ···
    求100以内包括100满足被3或者7整除且不能被21整除的数字个数
    功能:求1~100中满足被3或者7整除,但是不能被3,7同时整除
    

    编程实现(for和while各写⼀一遍):

    1. 求1到100之间所有数的和、平均值

    # for语句
    sum1 = 0
    for x in range(1,101):
        sum1+=x
        average = sum1/x
    print(sum1,average) #5050 50.5
    
    # while语句
    sum1=0
    x=1
    while x<=100:
        sum1+=x
        x += 1
        average =sum1/(x-1)
    print(sum1,average) #5050 50.5
    
    

    2. 计算1-100之间能3整除的数的和

    # for语句
    sum1 = 0
    for x in range(1, 101):
        if x % 3 == 0:
            sum1 += x
    print(sum1)#1683
    # while语句
    
    sum1 = 0
    x = 1
    while x <= 100:
        if x % 3 == 0:
            sum1 += x
        x += 1
    print(sum1)#1683
    

    3. 计算1-100之间不不能被7整除的数的和

    # for语句
    sum1 = 0
    for x in range(1, 101):
        if not (x % 7 == 0):
            sum1 += x
    print(sum1)  # 4315
    # while语句
    sum1 = 0
    x = 1
    while x <= 100:
        if not (x % 7 == 0):
            sum1 += x
        x += 1
    print(sum1)  # 4315
    

    稍微困难

    (多写)1. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34....

    """
    规律:当前数是前两个数的和;第n个数 = 第n-1数+第n-2个数
    n_2 = 1  第n-2个数
    n_1 = 1  第n-1数
    
    """
    n = 5
    n_2 = 0  # 当前数前两个数
    n_1 = 1  # 当前数的前一个数
    current = 1  # 当前数
    for x in range(2, n + 1):
        current = n_2 + n_1
        n_2 = n_1
        n_1 = current
    print('第%d个数的值是%d' % (n, current))
    

    (多看)2. 判断101-200之间有多少个素数,并输出所有素数。判断素数的⽅方法:⽤用⼀一个数分别除2到sqrt(这个数),如果能被整除,则表明此数不不是素数,反之是素数

    count = 0
    for x in range(101, 201, 2):  # 偶数能被二整除所以我们不取奇数
        for y in range(2, int(x ** 0.5) + 1):
            if x % y == 0:
                break
        else:
            print(x, '素数')
            count += 1
    print('素数的个数是%d' % count)
    
    方法2
    count = 0  # 个数
    for num in range(101, 201):
        # 判断是否是素数,x 范围是2~num-1
        for x in range(2, num):
            # 如果2~num-1之间有一个数能被num整除,说明这个数不是素数
            if num % x == 0:
                # print(num, '不是素数')
                break
        else:
            print(num, '是素数')
            count += 1
    print('101-200之间素数有:%d个' % count)
    
    
    101 素数
    103 素数
    107 素数
    109 素数
    113 素数
    127 素数
    131 素数
    137 素数
    139 素数
    149 素数
    151 素数
    157 素数
    163 素数
    167 素数
    173 素数
    179 素数
    181 素数
    191 素数
    193 素数
    197 素数
    199 素数
    素数的个数是21
    

    (多看)3. 打印出所有的⽔水仙花数,所谓⽔水仙花数是指⼀一个三位数,其各位数字⽴立⽅方和等于该数本身。例例如:153是

    ⼀一个⽔水仙花数,因为153 = 1^3 + 5^3 + 3^3

    for x in range(100, 1000):
        ge_wei = x % 10
        shi_wei = x // 10 % 10
        bai_wei = x // 100
        if x == bai_wei ** 3 + shi_wei ** 3 + ge_wei ** 3:
            print('%d是水仙花数' % x)
    

    (多看)4. 有⼀一分数序列列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列列的第20个分数分⼦子:上⼀一个分数的分⼦子加分⺟母 分⺟母:上⼀一个分数的分⼦子 fz = 2 fm = 1 fz+fm / fz

    fz = 2
    fm = 1
    for x in range(1, 21):
        print('第%d是%d/%d' % (x, fz, fm))
        temp = fz + fm
        fm = fz
        fz = temp
    
    方法2
    # 规律:当前分数的分子 = 前一个分数的分子 + 前一个分数的分母;
    # 当前分数的分母 = 前一个分数
    fen_zi = 1
    fen_mu = 1
    n = 20
    for x in range(n+1):  # 再循环中没用过的变量,就用下划线表示
        # print('第%d位是%d/%d'%(x,fen_zi,fen_mu))
        # temp = fen_zi
        # fen_zi = fen_zi + fen_mu
        # fen_mu = temp
        fen_zi ,fen_mu = fen_zi+fen_mu , fen_zi # fen_zi,fen_mu = 2+1,2
        print('第%d位是%d/%d'%(x,fen_zi,fen_mu))
    
    
    第1是2/1
    第2是3/2
    第3是5/3
    第4是8/5
    第5是13/8
    第6是21/13
    第7是34/21
    第8是55/34
    第9是89/55
    第10是144/89
    第11是233/144
    第12是377/233
    第13是610/377
    第14是987/610
    第15是1597/987
    第16是2584/1597
    第17是4181/2584
    第18是6765/4181
    第19是10946/6765
    第20是17711/10946
    

    (一点点)5. 给⼀一个正整数,要求:1、求它是⼏几位数 2.逆序打印出各位数字

    str1 = input('请输入正整数:')
    str2 = len(str1)
    print('%s是%d位数'% (str1,str2))
    print(str1[::-1])
    # 请输入正整数:521232132
    # 521232132是9位数
    # 231232125
    

    相关文章

      网友评论

          本文标题:day 5 作业

          本文链接:https://www.haomeiwen.com/subject/zsvelqtx.html