python实战训练---基础练习(3)

养兔子

题目: 有一对兔子,从出生后第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)

实例:

繁殖几个月?: 61个月共 1 对兔子
其中1月兔: 0
其中2月兔: 1
其中3月兔: 0
其中成年兔: 02个月共 1 对兔子
其中1月兔: 0
其中2月兔: 0
其中3月兔: 1
其中成年兔: 03个月共 2 对兔子
其中1月兔: 1
其中2月兔: 0
其中3月兔: 0
其中成年兔: 14个月共 3 对兔子
其中1月兔: 1
其中2月兔: 1
其中3月兔: 0
其中成年兔: 15个月共 4 对兔子
其中1月兔: 1
其中2月兔: 1
其中3月兔: 1
其中成年兔: 16个月共 6 对兔子
其中1月兔: 2
其中2月兔: 1
其中3月兔: 1
其中成年兔: 2

求质数

  • 质数又称为素数,是一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。

求n之内的质数。

程序分析 用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,'不是质数')

求水仙花数

什么是水仙花数?

  • 所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

第一种,while循环

  • 程序分析:通过while循环列出1000以内所有三位数,然后通过取整数算出百位,减去百位,然后除以10化整减去个位算出十位,取余数算出个位,然后进行**3来验证是否水仙花数
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 in 循环遍历

  • 程序分析 利用for循环控制100-999个数,每个数分解出个位,十位,百位。
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

猜你喜欢

转载自blog.csdn.net/xdc1812547560/article/details/107561444