4.19 11:42完成
读程序
1
numbers=1 # 定义初始变量
for i in range(0,20): # 进行20次循环
numbers*=2 #变量乘以2赋值给变量本身
print(numbers) #输出 2 的 20次方
'''
代码功能:计算2的20次方
'''
2
summation=0 # 定义计数变量
num=1 # 定义数字变量
while num<=100: # 数字变量小于等于100时执行循环,一共执行100次循环
if (num%3==0 or num%7==0) and num%21!=0: # 数字变量能整除3或能整除7但不能同时整除3和7时条件为真
summation += 1 # 条件为真时,计数变量加1
num+=1 #数字变量加1,执行下一次循环
print(summation) # 输出计数变量
'''
代码功能:统计 1-100中能被3或7整除但不能同时被3和7整除的数字个数
'''
代码题
3
求1到100之间所有数的和、平均值
for版本
sum = 0
ave = 0
for i in range(101):
sum += i
ave = sum / 100
print("sum:",sum,"ave:",ave)
结果
sum: 5050 ave: 50.5
while版本
sum = 0
ave = 0
i = 1
while i <= 100:
sum += i
i += 1
ave = sum / 100
print("sum:",sum,"ave:",ave)
结果
sum: 5050 ave: 50.5
4
计算1-100之间能3整除的数的和
for版本
sum = 0
for i in range(1,101):
if i % 3 == 0:
sum += i
print(sum)
结果
1683
while版本
sum = 0
i = 1
while i <= 100:
if i % 3 == 0:
sum += i
i += 1
print(sum)
结果
1683
5
计算1-100之间不能被7整除的数的和
for版本
sum = 0
for i in range(1,101):
if i % 7 != 0:
sum += i
print(sum)
结果
4315
while版本
sum = 0
i = 1
while i <= 100:
if i % 7 == 0:
i += 1
continue
else:
sum += i
i += 1
print(sum)
结果
4315
稍微困难的题
1
求斐波那契数列中第n个数的值:1,1,2,3,5,8,13,21,34....
num_1 = 1
num_2 = 1
num_new = 0 #替换
n = int(input("n:"))
i = 2 #计数
while True:
num_new = num_1 + num_2 #将前两个数的和赋值给空变量
num_1 = num_2 #向前移动赋值
num_2 = num_new #向前移动赋值
i += 1 #记录第几个数
if i == n:
break
print(num_new)
结果
n:8
21
2
判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:用⼀个数分别除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数
for i in range(101,201): # 循环计数101到200
for j in range(2,i): # 循环计数 2 到 i
if i % j == 0: # 如果i能整除2到(i-1)中的某一个数的话,则判断i非素数,跳出j循环 进入i+1循环
break
else: #如果i不能整除2到(i-1)中的任何一个数,说明i只能整除1和i,判断i为素数
print(i)
结果
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
197
199
3
打印出所有的水仙花数,所谓水仙花数是指⼀个三位数,其各位数字立方和等于该数本身。例如:153是⼀个⽔仙花数,因为153 = 1^3 + 5^3 + 3^3
i = 100
c = 0
while i < 1000:
if i == ((i // 100) ** 3) + ((i // 10 % 10) ** 3) + ((i % 10) ** 3):
c += 1
print(i)
i += 1
结果
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
fz = 2
fm = 1
new_fz = 0
for i in range(1,20):
new_fz = fm + fz
fm = fz
fz = new_fz
print(fz,'/',fm)
结果
17711 / 10946
5
给⼀个正整数,要求:1、求它是几位数 2.逆序打印出各位数字
n = 10230
count = 0 #记录位数
while (n // 10) != 0: # 当n整除10为0的时候说明n<10,跳出循环
m = n % 10 # 取最后一位数字
n = n // 10 # n减少一位
print(m) #倒序打印
if n < 10: # 当n<10时直接打印n的整数部分,此时n为首位
print(int(n))
count += 1
count += 1
print("位数:",count)
结果
0
3
2
0
1
位数: 5
html文件中的题
1
控制台输入年龄,根据年龄输出不同的提示(例如:老年人,青壮年,成年人,未成年,儿童)
age = int(input("age:"))
if age >= 0 and age <=3:
print("幼儿")
elif age >= 4 and age <=12:
print("儿童")
elif age >= 13 and age <=17:
print("少年")
elif age >= 18 and age <=28:
print("青年")
elif age >= 29 and age <=49:
print("壮年")
elif age >= 50 and age <=69:
print("中年")
elif age >= 70:
print("老年")
结果
要不断的输入,太麻烦了。
2
计算5的阶乘 5!的结果是
res = 1
i = 5
while i >= 1:
res *= i
i -= 1
print(res)
结果
120
3
求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘
res = 0 #记录累加
for i in range(1,21): # 20次累加
mul = 1 #记录累乘
for j in range(1,i+1): # i次累乘
mul *= j
res += mul
print(res)
结果
2561327494111820313
4
计算 1+1/2!+1/3!+1/4!+...1/20!=?
res = 0 #记录累加
for i in range(1,21): # 20次累加
mul = 1 #记录累乘
for j in range(1,i+1): # i次累乘
mul *= j
res += (1/mul)
print(res)
结果
1.7182818284590455
5
循环输入大于0的数字进行累加,直到输入的数字为0,就结束循环,并最后输出累加的结果。
sum = 0
while True:
num = float(input("input a num:"))
if num == 0:
break
sum += num
print(sum)
结果
input a num:1
input a num:2
input a num:3
input a num:0
6.0
6
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如:2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。
sum = 0
n = int(input("位数:"))
a = int(input("a:"))
num = 0 #求每一个数字
for i in range(0,(n + 1)):
sum += num
num = a*(10**i) + num
print(num)
print(sum)
结果
位数:5
a:2
2
22
222
2222
22222
222222
24690
7
输入三个整数x,y,z,请把这三个数由小到大输出。
x = int(input("x:"))
y = int(input("y:"))
z = int(input("z:"))
n = 0
if x < y and x < z:
print(x)
n = x
elif y < x and y < z:
print(y)
n = y
elif z < x and z < y:
print(z)
n = z
if x == n:
if y < z:
print(y)
print(z)
else:
print(z)
print(y)
if y == n:
if x < z:
print(x)
print(z)
else:
print(z)
print(x)
if z == n:
if x < y:
print(x)
print(y)
else:
print(y)
print(x)
结果
x:9
y:8
z:7
7
8
9
8
控制台输出三角形
a.根据n的值的不同,输出相应的形状
n = 5时 n = 4
***** ****
**** ***
*** **
** *
*
b.根据n的值的不同,输出相应的形状(n为奇数)
n = 5 n = 7
* *
*** ***
***** *****
*******
答案
#a
n = int(input("n:"))
i = n
while i >= 1:
print("*"* i)
i -= 1
#b
n = int(input("请输入一个奇数n:"))
if n % 2 == 0:
n = int(input("输的是偶数,请输入一个奇数n:"))
i = 1
while i <= n:
if i % 2 != 0:
print((" " * int(((n-i)/2))),"*"* i)
i += 1
结果
#a
'''
n:6
******
*****
****
***
**
*
'''
#b
'''
请输入一个奇数n:8
输的是偶数,请输入一个奇数n:5
*
***
*****
'''
9
输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
mul = 1
h = 1
l = 1
for h in range(1,10):
for l in range(1,(h + 1)):
if h >= l:# 当行号大于等于列号时不换行
print(" ",h," ","*"," ",l," ","="," ",h * l," ", end = " ")
print("\n")## 当行号小于列号时换行
结果
'''
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
'''
10
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?
for i in range(0,34):
for j in range(0,51):
if (3 * i + j * 2 + (100 - i - j) * 0.5) == 100:
print("大马:",i,"中马:",j,"小马:",(100 - i - j))
结果
大马: 2 中马: 30 小马: 68
大马: 5 中马: 25 小马: 70
大马: 8 中马: 20 小马: 72
大马: 11 中马: 15 小马: 74
大马: 14 中马: 10 小马: 76
大马: 17 中马: 5 小马: 78
大马: 20 中马: 0 小马: 80
11
我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的: 5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。
for i in range(0,21):
for j in range(0,34):
if (5 * i + 3 * j + (100 - i - j) * (1/3)) == 100:
print("公鸡:",i,"母鸡:",j,"雏鸡:",(100 - i - j))
结果
公鸡: 0 母鸡: 25 雏鸡: 75
公鸡: 4 母鸡: 18 雏鸡: 78
公鸡: 8 母鸡: 11 雏鸡: 81
公鸡: 12 母鸡: 4 雏鸡: 84
12
小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?
for i in range(0,7):
for j in range(0,51):
for k in range(0,21):
if (15 * i + 2 * j + k * 5) == 100:
print("洗发水:",i,"香皂:",j,"牙刷:",k)
结果
'''
洗发水: 0 香皂: 0 牙刷: 20
洗发水: 0 香皂: 5 牙刷: 18
洗发水: 0 香皂: 10 牙刷: 16
洗发水: 0 香皂: 15 牙刷: 14
洗发水: 0 香皂: 20 牙刷: 12
洗发水: 0 香皂: 25 牙刷: 10
洗发水: 0 香皂: 30 牙刷: 8
洗发水: 0 香皂: 35 牙刷: 6
洗发水: 0 香皂: 40 牙刷: 4
洗发水: 0 香皂: 45 牙刷: 2
洗发水: 0 香皂: 50 牙刷: 0
洗发水: 1 香皂: 0 牙刷: 17
洗发水: 1 香皂: 5 牙刷: 15
洗发水: 1 香皂: 10 牙刷: 13
洗发水: 1 香皂: 15 牙刷: 11
洗发水: 1 香皂: 20 牙刷: 9
洗发水: 1 香皂: 25 牙刷: 7
洗发水: 1 香皂: 30 牙刷: 5
洗发水: 1 香皂: 35 牙刷: 3
洗发水: 1 香皂: 40 牙刷: 1
洗发水: 2 香皂: 0 牙刷: 14
洗发水: 2 香皂: 5 牙刷: 12
洗发水: 2 香皂: 10 牙刷: 10
洗发水: 2 香皂: 15 牙刷: 8
洗发水: 2 香皂: 20 牙刷: 6
洗发水: 2 香皂: 25 牙刷: 4
洗发水: 2 香皂: 30 牙刷: 2
洗发水: 2 香皂: 35 牙刷: 0
洗发水: 3 香皂: 0 牙刷: 11
洗发水: 3 香皂: 5 牙刷: 9
洗发水: 3 香皂: 10 牙刷: 7
洗发水: 3 香皂: 15 牙刷: 5
洗发水: 3 香皂: 20 牙刷: 3
洗发水: 3 香皂: 25 牙刷: 1
洗发水: 4 香皂: 0 牙刷: 8
洗发水: 4 香皂: 5 牙刷: 6
洗发水: 4 香皂: 10 牙刷: 4
洗发水: 4 香皂: 15 牙刷: 2
洗发水: 4 香皂: 20 牙刷: 0
洗发水: 5 香皂: 0 牙刷: 5
洗发水: 5 香皂: 5 牙刷: 3
洗发水: 5 香皂: 10 牙刷: 1
洗发水: 6 香皂: 0 牙刷: 2
洗发水: 6 香皂: 5 牙刷: 0
'''