Python基础训练100题-3

2022-07-27 08:59:19 浏览数 (1)

分享一些Python学习题目

  • 实例011:养兔子
  • 实例012:100到200的素数
  • 实例013:所有水仙花数
  • 实例014:分解质因数
  • 实例015:分数归档

实例011:养兔子

题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

程序分析:我认为原文的解法有点扯,没有考虑3个月成熟的问题,人家还是婴儿怎么生孩子?考虑到三个月成熟,可以构建四个数据,其中:一月兔每个月长大成为二月兔,二月兔变三月兔,三月兔变成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。

代码语言:javascript复制
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)

实例012:100到200的素数

题目:判断101-200之间有多少个素数,并输出所有素数。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。用else可以进一步简化代码.

代码语言:javascript复制
import math
for i in range(100,200):
    flag=0
    for j in range(2,round(math.sqrt(i)) 1):
        if i%j==0:
            flag=1
            break
    if flag:
        continue
    print(i)
 
 
print('nSimplify the code with "else"n')
 
 
for i in range(100,200):
    for j in range(2,round(math.sqrt(i)) 1):
        if i%j==0:
            break
    else:
        print(i)

实例013:所有水仙花数

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

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

代码语言:javascript复制
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)

实例014:分解质因数

题目:将一个整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。

代码语言:javascript复制
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

实例015:分数归档

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

程序分析:用条件判断即可。

代码语言:javascript复制
points=int(input('输入分数:'))
if points>=90:
    grade='A'
elif points<60:
    grade='C'
else:
    grade='B'
print(grade)

0 人点赞