题目: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析: 我认为原文的解法有点扯,没有考虑3个月成熟的问题,人家还是婴儿怎么生孩子?考虑到三个月成熟,可以构建四个数据,其中:一月兔每个月长大成为二月兔,二月兔变三月兔,三月兔变成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。
month=int(input('繁殖几个月?: '))
month_1=1
month_2=0
month_3=0
month_elder=0
for i in range(month):
month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3
print('第%d个月共'%(i+1),month_1+month_2+month_3+month_elder,'对兔子')
print('其中1月兔:',month_1)
print('其中2月兔:',month_2)
print('其中3月兔:',month_3)
print('其中成年兔:',month_elder)
实例:
繁殖几个月?: 6
第1个月共 1 对兔子
其中1月兔: 0
其中2月兔: 1
其中3月兔: 0
其中成年兔: 0
第2个月共 1 对兔子
其中1月兔: 0
其中2月兔: 0
其中3月兔: 1
其中成年兔: 0
第3个月共 2 对兔子
其中1月兔: 1
其中2月兔: 0
其中3月兔: 0
其中成年兔: 1
第4个月共 3 对兔子
其中1月兔: 1
其中2月兔: 1
其中3月兔: 0
其中成年兔: 1
第5个月共 4 对兔子
其中1月兔: 1
其中2月兔: 1
其中3月兔: 1
其中成年兔: 1
第6个月共 6 对兔子
其中1月兔: 2
其中2月兔: 1
其中3月兔: 1
其中成年兔: 2
程序分析 用else执行for循环的奖励代码(如果for是正常完结,非break)。
num1=int(input('下限:'))
num2=int(input('上限:'))
for i in range(num1,num2i+1):
if i > 1:
for j in range(2,i):
if (i % j) == 0:
break
else:
print(i)
num = int(input('请您输入一个不小于1的整数:'))
i = 2
flag = True
while i < num:
if num % i == 0:
flag = False
i += 1
if flag:
print(num,'是质数')
else:
print(num,'不是质数')
i =100
while i<1000:
num1 = i // 100 # 百位
num2 = int((i-num1*100)/10) # 十位
num3 = i%10 #个位
# print(num2)
if num3 **3 +num2**3 +num1**3 ==i:
print(i)
i += 1
结果:
153
370
371
407
for i in range(100,1000):
s=str(i)
one=int(s[-1])
ten=int(s[-2])
hun=int(s[-3])
if i == one**3+ten**3+hun**3:
print(i)
153
370
371
407
题目: 将一个整数分解质因数。例如:输入90,打印出90=233*5。
程序分析 :
根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。
target=int(input('输入一个整数:'))
print(target,'= ',end='')
if target<0:
target=abs(target)
print('-1*',end='')
flag=0
if target<=1:
print(target)
flag=1
while True:
if flag:
break
for i in range(2,int(target+1)):
if target%i==0:
print("%d"%i,end='')
if target==i:
flag=1
break
print('*',end='')
target/=i
break
实例:
输入一个整数:100
100 = 2*2*5*5
题目: 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
程序分析:
用条件判断即可。
points=int(input('输入分数:'))
if points>=90:
grade='A'
elif points<60:
grade='C'
else:
grade='B'
print(grade)
实例:
输入分数:66
B