目录
2.求1-100间的所有奇数和,如果是5的倍数则不参与求和计算。
3.找到所有水仙花数的平均数。(水仙花数是三位数, 每个数位上的数字的 3次幂之和等于它本身。)
4.在控制台上输出1000~2000之间不能被3整除的前20个数的平均值
5.一个自然数与3的和是5的倍数,与3的差是6的倍数,1000以内这样的自然数有几个?
6.在1000--5000之间的数,它被2除余1,被5除余3,被9除余1,其中最大的10个数字的平均数?
7.编程求一个四位自然数ABCD,它乘以A后变成DCBA(如:1234变为4321)
8.输入一个数计算该数的阶乘(5!=5*4*3*2*1,这是5的阶乘)
11.计算1-100之间所有能被3整除但是不能被5整除的所有数的平均数
12. 计算1-100之间所有能被3整除但是不能被5整除的最大的5个数的平均数
13.最多输入10个位于10-50之间的整数,如果输入了30,则停止输入,计算输入的数字的平均数
声明
该练习答案为个人所写,仅使用分支语句和for循环语句,如果你有更好的写法,请遵从自己的写法,同时欢迎分享,此文章的答案仅供参考
开始之前简单了解一下 range()方法的使用:
练习
1.求1-100间的所有奇数和
result = 0
for i in range(1,100):
if i % 2 != 0:
result += i
print(result)
2.求1-100间的所有奇数和,如果是5的倍数则不参与求和计算。
result = 0
for i in range(1,100):
#判断是否是奇数
if i % 2 != 0:
#判断是否是5的倍数
if i % 5 != 0:
result += i
print(result)
3.找到所有水仙花数的平均数。(水仙花数是三位数, 每个数位上的数字的 3次幂之和等于它本身。)
a1 = 0
a2 = 0
a3 = 0
result = 0
count = 0
for num in range(100, 1000):
# 求百位上的数
a1 = num //100 % 10
# 求十位上的数
a2 = num // 10 % 10
# 求个位上的数
a3 = num % 10
# 进行判断是否是水仙花数
if a1 ** 3 + a2 ** 3 + a3 ** 3 == num:
result += num
count += 1
# 求平均值
average = result / count
print(f"所有水仙花数的平均数为:{average}")
4.在控制台上输出1000~2000之间不能被3整除的前20个数的平均值
count = 0
result = 0
for i in range(1000,2000):
if i % 3 != 0:
result += i
count += 1
# 判断是否到第20个数
if count >= 20:
break
average = result / count
print(f"1000~2000之间不能被3整除的前20个数的平均值为:{average}")
5.一个自然数与3的和是5的倍数,与3的差是6的倍数,1000以内这样的自然数有几个?
count = 0
for i in range(1000):
if (i + 3) % 5 == 0 and (i - 3) % 6 == 0:
count += 1
print(f"有{count}个")
6.在1000--5000之间的数,它被2除余1,被5除余3,被9除余1,其中最大的10个数字的平均数?
count = 0
result = 0
# 当 step 为 负数时可以从大到小遍历
for i in range(5000, 1000, -1):
if i % 2 == 1 and i % 5 == 3 and i % 9 == 1:
print(i)
result += i
count += 1
# 找出10个最大的平均数
if count == 10:
break
average = result / count
print(f"最大的10个数字的平均数为:{average}")
7.编程求一个四位自然数ABCD,它乘以A后变成DCBA(如:1234变为4321)
count = 0
for num in range(1000,10000):
a0 = num // 1000
a1 = num // 100 % 10
a2 = num // 10 % 10
a3 = num % 10
# 判断 逆序后的数 == 原数 * 千位上的数
if a3 * 1000 + a2 * 100 + a1 * 10 + a0 == num * a0:
print(num)
count += 1
# 这里是只找一个,如果想找多个就更改count == 的数字
if count == 1:
break
8.输入一个数计算该数的阶乘
(5!=5*4*3*2*1,这是5的阶乘)
num = int(input("请输入一个数"))
result = 1
for i in range(1, num+1):
if num == 0:
# 特殊情况 0的阶乘是1
print(f"1")
else:
result *= i
print(f"该数的阶乘为:{result}")
9.求四位数闰年的个数
count = 0
for i in range(1000, 10000):
if i % 4 == 0 and i % 100 != 0 or i % 400 == 0:
# 是闰年count就+1
count +=1
print(f"四位数闰年的个数:{count}")
10.求四位数中数值最大的闰年与数值最小闰年的差值
max_ly = 0
min_ly = 0
count = 0
count1 = 0
# 找出最大年份的闰年
for i in range(10000, 1000, -1):
if i % 4 == 0 and i % 100 != 0 or i % 400 == 0:
max_ly = i
if count == 1:
# 当count == 1时跳出循环
break
# 找出最小年份的闰年
for i in range(1000, 10000):
if i % 4 == 0 and i % 100 != 0 or i % 400 == 0:
min_ly = i
if count1 == 1:
break
value = max_ly - min_ly
print(f"四位数中数值最大的闰年与数值最小闰年的差值:{value}")
11.计算1-100之间所有能被3整除但是不能被5整除的所有数的平均数
count = 0
result = 0
for i in range(1, 100):
if i % 3 == 0 and i % 5 != 0:
result += i
count += 1
average = result / count
print(f"1-100之间所有能被3整除但是不能被5整除的所有数的平均数:{average}")
12. 计算1-100之间所有能被3整除但是不能被5整除的最大的5个数的平均数
count = 0
result = 0
for i in range(100, 1, -1):
if i % 3 == 0 and i % 5 != 0:
result += i
count += 1
if count == 5:
break
average = result / count
print(f"1-100之间所有能被3整除但是不能被5整除的最大的5个数的平均数:{average}")
13.最多输入10个位于10-50之间的整数,如果输入了30,则停止输入,计算输入的数字的平均数
count = 0
result = 0
for i in range(1, 10):
num = int(input("请输入10 - 50之间的数字"))
# 判断输入的内容是否符合题目要求
if num == 30 or 10 < num or num > 50:
break
result += num
count += 1
if result == 0 or count == 0:
print(f"请输入10 - 50之间的数字")
else:
average = result / count
print(f"输入的数字的平均数:{average}")
14.打印9*9乘法表
for i in range(1, 10):
for j in range(i, 10):
print(f"{i}*{j}=", i * j, " ", sep = "", end = "",)
print(end="\n")
15. 输入数字打印以下图形
输入3打印
*
***
*****
num = int(input("想打印几层就输入多少"))
for i in range(1, num + 1):
for j in range(i * 2 -1):
print(f"*", end = "")
print()
16.输入一个数字,判断该数字是否是质数
num = int(input("输入一个数字"))
x = True
for i in range(2, num):
if num % i == 0:
x = False
if x:
print("是质数")
else:
print("不是质数")
17.求1000以内有几个质数
count = 0
x = 0
for i in range(2,1000):
for j in range(1, i+1):
if i % j == 0:
x += 1
if x == 2:
count += 1
x = 0
print(f"1000以内有{count}个质数")
18. 求1000以内最大的10个质数的平均数
result = 0
count = 0
x = 0
for i in range(1000, 2, -1):
for j in range(1, i+1):
if i % j == 0:
x += 1
if x == 2:
count += 1
result += i
x = 0
if count == 10 :
break
average = result / count
print(f"1000以内最大的10个质数的平均数:{average}")