本文最后更新于 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