Day4-作业

  • 读程序,总结程序的功能:
numbers=1 #变量
for i in range(0,20): # 循环次数为20 i=0~19
     numbers*=2     # number=2**(i+1)
print(numbers)

答:本题输出结果为2的20次方,其功能是求2的n次方(n=1~20)

改正:
功能是求2的20次方
注意:如果for中的变量不需要在循环体中使用,这个变量命名时可以用'_'命名

for _ in range(20)
    print('==')
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整除的个数

  • 编程实现(for和while各写⼀遍):
  1. 求1到100之间所有数的和、平均值
# for循环
num=0
sum1=0
for x in range(1,101):
    sum1+=x
    num+=1
print("1~100之间所有数的和=%d"%(sum1))
print("1~100之间所有数的平均值=%f"%(sum1/num))

结果:

1~100之间所有数的和=5050
1~100之间所有数的平均值=50.500000

# while循环
number=1
sum1=0
num=0
while number<=100:
    sum1+=number
    number+=1
    num+=1
print("1~100之间所有数的和=%d"%(sum1))
print("1~100之间所有数的平均值=%f"%(sum1/num))

结果:

1~100之间所有数的和=5050
1~100之间所有数的平均值=50.500000

  1. 计算1-100之间能3整除的数的和
# for循环
sum1=0
for x in range(1,101):
    if x%3==0:
        sum1+=x
print(sum1)

#扩展 0-100能被3整除的数的和
sum1=0
for x in range(0,101,3):
    sum1+=x
print(sum1)

结果:

1683
1683

#while循环
sum1=0
number=1
while number<=100:
    if number%3==0:
        sum1+=number
    number+=1
print(sum1)

结果:

1683

  1. 计算1-100之间不能被7整除的数的和
#for循环
sum1=0
for x in range(1,101):
    if x%7:
        sum1+=x
print(sum1)

结果:

4315

#while循环
sum1=0
number=1
while number<=100:
    if number%7:
        sum1+=number
    number+=1
print(sum1)

结果:

4315

  1. 有⼀对兔⼦,从出⽣后第3个⽉起,每个⽉都⽣⼀对兔⼦,⼩兔⼦⻓到第三个⽉后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问第n个⽉的兔⼦总共有多少? 规律: 第⼀个⽉和第⼆个⽉的数量都是1 从第三个⽉开始 n =( n-1) + (n-2) 1,1,2,3,5,8,13,21...n? 1 1 2 1 3 2 = 1+1 4 3 = 1+2 5 5 = 2+3 6 8 = 3+5 n 第(n-1)+第(n-2) n = n1 + n2 n==3 n1=1,n2=1 n=n1+n2=2 n==4 n1 = n2 n2 = n n = n1+n2
import random
number1=1
number2=1
mon=random.randint(1,12)
num=1
while num<=mon:
    if num<=2:
        number1=1
    else:
        # number1,number2=number1+number2,number1
        number3=number1
        number1+=number2
        number2=number3
    num+=1
print('第%d月共有兔子%d只'%(mon,number1))

结果

第11月共有兔子89只

  1. 判断101-200之间有多少个素数,并输出所有素数。判断素数的⽅法:⽤⼀个数分别除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数
# 没用break:
import math
number1=True
number2=0
for x in range(101,200):
    number1=True
    for y in range(2,int(math.sqrt(x))+1):
        if x%y==0:
            number1=False;break
    if number1:
        number2+=1; print('素数%d'%(x))
print(number2)
    

结果:

素数101
素数103
素数107
素数109
素数113
素数127
素数131
素数137
素数139
素数149
素数151
素数157
素数163
素数167
素数173
素数179
素数181
素数191
素数193
素数197
素数199
21

  1. 打印出所有的⽔仙花数,所谓⽔仙花数是指⼀个三位数,其各位数字⽴⽅和等于该数本身。例如:153是
    ⼀个⽔仙花数,因为153 = 1^3 + 5^3 + 3^3
for number in range(100,1000):
    num1=number//100
    num2=(number%100)//10
    num3=number%10
    num4=num1**3+num2**3+num3**3
    if num4==number:
        print('%d是水仙花'%(number))

结果:

153是水仙花
370是水仙花
371是水仙花
407是水仙花

  1. 有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数
    1 2 1 2 3 2 3 5 3 4 8 5 分⼦:上⼀个分数的分⼦加分⺟ 分⺟: 上⼀个分数的分⼦ fz = 2 fm = 1 fz+fm / fz
mul1=1 # 分子
mul2=1 # 分母
num1=1
while num1<=20:
    mul3=mul1
    mul1+=mul2 #分子
    mul2=mul3 #分母
    # mul1, mul2 = mul1 + mul2, mul1
    num1+=1
print('%d/%d'%(mul1,mul2))

结果

17711/10946

  1. 给⼀个正整数,要求:1、求它是⼏位数 2.逆序打印出各位数
import random
number=random.randint(100,10000)
print(number)
for x in range(1,100):
    if number//10**x:
        pass
    else:
        print('他是%d位数'%(x))
        break
chr=str(number)
for x in range(len(chr),0,-1):
    print(chr[x])


简单的一种:
import random
number=random.randint(100,10000)
print(number)
chr=str(number)
long=len(chr)
print('他是%d位数'%(long))
for x in range(len(chr),0,-1):
    print(chr[x-1])

结果:

7939
他是4位数
9
3
9
7
简单的一种:
4504
他是4位数
4
0
5
4

你可能感兴趣的:(Day4-作业)