100练习-day2
本文最后更新于 2025-12-03,文章内容可能已经过时。
100练习
练习11
【程序11】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
a,b =1,1
valu = []
month= 6
for i in range(month//2+1):
valu.append(a)
valu.append(b)
a= a+b
b= a+b
if 2>=month>0:
print("2只")
else:
print(f'{valu[month-1]*2}只')
16只
练习12
【程序12】
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
from math import sqrt
a=[]
pic=0
for i in range(101,201):
for j in range(2,int(sqrt(i))+1):
if i%j==0:
pic = 1
if pic ==0:
a.append(i)
pic =0
print(a)
[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
练习13
【程序13】
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
for i in range(100,1000):
a = int(str(i)[0])
b = int(str(i)[1])
c = int(str(i)[2])
if a**3+b**3+c**3==i:
print(i)
153
370
371
407
练习14
【程序14】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
num = 90
a = []
def cut(n):
for i in range(2,n+1):
if n%i ==0 and n>i:
return i
elif n ==i:
return 0
k = num
while 1:
i = cut(num)
if i:
a.append(i)
num = int(num/i)
else:
break
a.append(num)
s ='{}={}'.format(k,[i for i in a]).replace('[','').replace(']','').replace(',','*').replace(' ','')
print(s)
90=2*3*3*5
练习15
【程序15】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
def check_result(n:int):
st ='A' if (n>=90) else ('B' if (90>n>=60) else ('C' if (60>n>0) else 'error'))
return st
print(check_result(100))
print(check_result(80))
print(check_result(54))
A
B
C
练习16
我也不知道为什么这个题库没有16。。。,自己补了一个。
题目描述:
给你两个正整数a,b, 输出它们公约数的个数。
例如:a = 24, b = 36
则输出:6
def solve_it(a,b):
count = 0
if a>b:
a,b=b,a
for i in range(1,a+1):
if a%i==0 and b%i ==0:
count+=1
#print(i)
return count
print(solve_it(24,36)) # 答案需要输出
6
练习17
【程序17】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为'\n'.
```python
import string
instr = 'asdas 153!@$%13asdh781y23u18oG&*!TY*&GHYUDFGsahd89h178gdasiug!@#%!!@# 4 53'
space = 0
letters = 0
digit = 0
others = 0
for i in instr:
if i.isalpha():
letters+=1
elif i.isspace():
space +=1
elif i.isdigit():
digit+=1
else:
others+=1
print(f'字母个数:{letters},空格个数:{space},数字个数:{digit},其他字符个数:{others}')
字母个数:34,空格个数:3,数字个数:20,其他字符个数:17
练习18
【程序18】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
```python
from functools import reduce
tn = 0
sn = []
n = 6
a = 3
for i in range(n):
tn +=a
a *=10
sn.append(tn)
print(sn)
print(sum(sn))
print(reduce(lambda x,y:x+y,sn))
[3, 33, 333, 3333, 33333, 333333]
370368
370368
练习19
【程序19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
1. 程序分析:请参照程序<--上页程序14.
```python
a =[]
for n in range(1,1001):
if sum([i for i in range(1,n) if n%i==0]) == n:
a.append(n)
else:
pass
print(a)
[6, 28, 496]
练习20
【程序20】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
```python
a = 100
num = 10
zlen = 100
for i in range(1,num+1):
zlen+=a/2
a /=2
print(zlen,a)
199.90234375 0.09765625
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 纪梦鱼
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果
音乐天地

