day-5 day4homewok answer

  • 1.读程序,总结程序的功能:

numbers=1

for i in range(0,20):

numbers*=2

print(numbers)

"""

分析:numbers = 1

  i = (0,1,2,3,4,...19)
  # i = 0   numbers = numbers * 2  numbers = 1 * 2 = 2
  # i = 1   numbers = numbers * 2  numbers = 2 * 2 = 4
  # i = 2   numbers = numbers * 2  numbers = 4 * 2 = 8
 # 以此类推,
 # 实现功能:打印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

进入while中判断 1<= 100,成立执行if语句

if 的条件语句是:能被3整除或者能被7整除,但不能同时被21整除的数,因为1不满足,所以summation += 1 不执行,

继续执行 num +=1等于2,再进入while循环

以此类推

实现功能:计算从1到100之间能被3整除或者能被7整除,

并且不能同时被21整除的数的个数

  • 编程实现(for和while各写1遍):
  1. 求1到100之间所有数的和、平均值
      sum1 =0
      for num1 in range(101):
      sum1 += num1
      print(sum1)
      print(sum1/ 100)
  while写法
      sum1 = 0
      num1 = 1
      while num1 <= 100:
      sum1 += num1
      num1 += 1
      print(sum1)
      print(sum1/ 100)
 2. 计算1-100之间能3整除的数的和
 for写法
sum2 =0
for num2 in range(1,101):
    if num2 % 3 == 0:
        sum2 += num2
print(sum2)
 while写法

    sum2 = 0
    num2 = 1
    while num2 <= 100:
        if num2 % 3 == 0:
            sum2 += num2
        num2 += 1
    print(sum2)

1. 计算1-100之间不能被7整除的数的和
   for写法
sum3 = 0
for num3 in range(101):
    if num3 % 7 != 0:
        sum3 +=num3
    num3 += 1
print(sum3)
```

while写法
sum4 = 0
num4 = 0
while num4 <= 100:
    if num4 % 7 != 0:
        sum4 += num4  # sum4 = sum4 + num4
    num4 += 1
print(sum4)

1. 求斐波那契数列中第n个数的值:1,1,2,3,5,8,13,21,34....
a = 0 
b = 1
for num in range(int(input('请输入数字'))):
    c = a + b
    a = b
    b = c
print('斐波那契数列中第n个数的值是:',a)
1. 判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:用一个数分别除2到sqrt(这个 数),如果能被整除,则表明此数不是素数,反之是素数

- 什么是素数(质数):除了1和它本身,不能被其他的数整除,
先将101-200的所有的整数,一个一个的取出来
for num in range(101,201):  
    判断是否是素数
    x的范围是2~num-1
    for x in range (2,num):
        if num % x == 0:
            print(num ,'不是素数')
            只要在2~num-1 之间找到一个能被num整除的数,就说明num不是素数
            break
        else:
            count += 1
            print(num,'是素数')

print ('101-200之间的素数有':count)
  
  =============方法二============
for num in range(101,201):
    isprime = True # 保存2~num-1 中能被num整除的个数
    for x in range(2,num):
        if num % x == 0:
            isprime = False    #当在2-num-1 之间找到了一个能被整除的数,就说明假设不成立
            break
     循环结束再判断之前的假设是否成立
    if isprime == True:
        print(num,'是素数')
```
 =============方法三============
    for num in range(101,201):
        count = 0
        for x in range(2,num):
            if num % x == 0:
                count += 1
        
                break
        
        if count == 0:
            print('是素数')
  1. 打出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是 一个水仙花数,因为153 = 1^3 + 5^3 + 3^3
    for x in range(100,999):
        if (x //100)**3 + (x % 100 // 10)**3 +(x % 10)**3 == x:
            print(x)
  1. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数
    分子:上一个分数的分子加分母
    分母: 上一个分数的分子 fz = 2 fm = 1 fz+fm / fz
    在数列前面加(1/1)
    fz1 = 1 
    fm1 = 1
    for x in range(1,20+1):
        fz1,fm1 = fm + fz1,fz1
    
        #temp =fz1
        #fz1 = fm1 + fz1
        #fm1 = temp

python中交换两个数

a = 10

b = 20     #temp =a   

           #a = b 
           #b = temp

a,b = b,a

print(a.b)


  1. 给一个正整数,要求:1、求它是几位数 2.逆序打印出各位数字
    num = int(input('请输入正整数'))
    num1 = 10
    a = 1
    while num // num1 != 0:
        num1 *=10
    
        a += 1
    print(a,'位数')
    
    for x in range(a):
        print (num % 10)
        num = num // 10
    
    
      方法二
    num = int(input('输入'))
    print(len(str(num)))
    print
    
     方法三
    num = int(input('输入数字'))
    
    length = 0 
    while True:
        num //= 10
        length += 1
        if num == 0:
            break
    print('length')
    for _ in range(length):
        print(num2%,end='')
        num2 //= 10
        print(num2)

你可能感兴趣的:(day-5 day4homewok answer)