Day4-作业
2018-07-19 本文已影响0人
晓晓的忍儿
- 读程序,总结程序的功能:
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到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-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-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
- 有⼀对兔⼦,从出⽣后第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只
- 判断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
- 打印出所有的⽔仙花数,所谓⽔仙花数是指⼀个三位数,其各位数字⽴⽅和等于该数本身。例如: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是水仙花
- 有⼀分数序列: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、求它是⼏位数 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