美文网首页
2018-08-23-day04-循环和分支作业

2018-08-23-day04-循环和分支作业

作者: oxd001 | 来源:发表于2018-08-23 20:43 被阅读0次

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

    1.

    numbers=1  
    for i in range(0,20):     
      numbers*=2  
    print(numbers)  
    

    功能:算出2^20次方的值,

    过程:

    第一次:i=0 numbers=1*2=2=2^1
    第二次:i=1 numbers=2*2=4=2^2
    第三次:i=2 numbers=4*2=8=2^3
    ...
    ...
    第二十次:i=19 numbers=52488*2=1048576=2^20
    结束循环
    结果:1048576
    

    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)
    

    功能:统计出1~100中3或者7的倍数,但是又不是21的倍数的个数
    过程:

    第一次:num=1 条件语句为False  num += 1 
    第二次:num=2 条件语句为False  num += 1
    第三次:num=3 条件语句为True,summation = 1,num += 1
    ...
    第六次:num=6 条件语句为True,summation = 2,num += 1
    第七次:num=7 条件语句为True,summation = 3,num += 1
    结果:43-4=39
    
    

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

    1. 求1到100之间所有数的和、平均值
    #for实现
    sum=0
    avg_num=0
    for i in range(1,101):
      sum+=i
    avg_num=sum/100
    print('和:%d\n平均数:%.2f'%(sum,avg_num))
    '''
    结果:
    和:5050
    平均数:50.50
    '''
    #while实现
    sum = 0
    avg_num = 0
    i = 1
    while i <=100:
        sum += i
        i += 1
    avg_num = sum/100
    print('和:%d\n平均数:%.2f'%(sum,avg_num))
    '''
    结果:
    和:5050
    平均数:50.50
    '''
    
    1. 计算1-100之间能3整除的数的和
    #for实现
    sum = 0
    for i in range(3,101,3):
      sum += i
    print(sum)
    '''
    结果:
    1683
    '''
    
    #while实现
    sum = 0
    i =3
    while i <101:
      sum += i
      i += 3
    print(sum)
    '''
    结果:
    1683
    '''
    
    1. 计算1-100之间不能被7整除的数的
    #for实现
    sum = 0
    for i in range(1,101):
      if i%7:
        sum += i
    print(sum)
    '''
    结果:
    4315
    '''
    
    #while循环实现
    sum = 0
    i = 1
    while i <=100:
      if i%7:
        sum += i
      i +=1
    print(sum)
    '''
    结果:
    4315
    '''
    
    

    稍微困难

    1. 求斐波那契数列中第n个数的值:1,1,2,3,5,8,13,21,34....
    #方法一:
    number1=input("Please input the Fibonacci numbers you want to know:" )
    num=int(number1)
    
    def fibo_num(num):
        if num<=2:
            return 1
        else:
            return fibo_num(num-1)+fibo_num(num-2)
    print(fibo_num(num))
    
    #方法二
    number1=input("Please input the Fibonacci numbers you want to know:" )
    num=int(number1)
    p1 = 1
    p2 = 1
    c = 0
    if num<=2:
      print(1)
    else:
      for i in range(2,num):
        c=p2+p1
        p1=p2
        p2=c
    print(c)
      
    
    
    2. 判断101-200之间有多少个素数,并输出所有素数。判断素数⽅方法:用一个数分别除2到sqrt(这个 数),如果能被整除,则表明此数不是素数,反之是素数
    #方法一
    for i in range(101,201):
        s = i**(0.5)  
        j=2
        while j<int(s)+1:
            if i%j: #是否能被整除,能够:直接中断内层循环 不能:进行条件判断是否为素数
                if j==int(s):
                    count +=1
                    print(i)
                    break
                else:
                    j+=1
                    continue
            else:
                break
    print('素数个数:%d'%(count))
    '''
    结果:
    101
    103
    107
    109
    113
    127
    131
    137
    139
    149
    151
    157
    163
    167
    173
    179
    181
    191
    193
    197
    199
    素数个数:21
    '''
    
    #方法二
    import math
    count = 0
    for i in range(100,201):
        x = math.sqrt(i)
        flag = False
        j=2
        while j<=x:
            if i%j:
                flag=True
                j+=1
            else:
                flag = False
                break
        if flag:
            count += 1
            print(i)
            print(count)
        
    #方法三
    count=0
    for i in range(100,201):
      for j in range(2,i):
        if i%j==0:
          break
      else:
        count +=1
        print(i)
    print(count)
    '''
    注意:方法一和二时间复杂度更小,方法三时间复杂度更高,最好采用筛法
    
    '''
    
    
    3. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例例如:153是 一个水仙花数,因为153 = 1^3 + 5^3 + 3^3 4. 有⼀一分数序列:
    ge=0
    shi=0
    bai=0
    for i in range(100,1000):
        bai=i//100
        shi=i%100//10
        ge=i%100%10
        if(i==(ge**3+shi**3+bai**3)):
    print(i)
    '''     
    结果:
    153
    370
    371
    407
    '''
    
    4.有一个分数数列,2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列列的第20个分数 分子:上一个分数的分子加分母 分母: 上一个分数的分子 fz = 2 fm = 1 fz+fm / fz
    Denominator=2  #分母
    molecule=1  #分子
    temp=0  #临时存储
    i=2  #从第二个开始
    while i<=20:
        temp=Denominator  
        Denominator=temp+molecule
        molecule=temp
        i +=1
        
    print("%d//%d"%(Denominator,molecule))
    '''
    结果:
    17711//10946
    '''
    
    
    5. 给一个正整数,要求:1、求它是几位数 2.逆序打印出各位数字

    基础

    num=input("please input a number:")
    print('It is a %d length number'%(len(num)))
    print(num[-1::-1])
    '''
    结果:
    please input a number:123
    It is a 3 length number
    321
    '''
    

    相关文章

      网友评论

          本文标题:2018-08-23-day04-循环和分支作业

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