python经典程序实例-Python3经典100例(③)

实例11

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

分析:可通过定义一个函数,然后利用递归的思想将其实现;

代码:

#!/usr/bin/python3

# -*- coding:utf-8 -*-

# @Time : 2018-10-10 8:49

# @Author : Manu

# @Site :

# @File : rabbit_num.py

# @Software: PyCharm

def rabbit_num(month):

if month == 1 or month == 2:

return 1

else:

return rabbit_num(month-2) + rabbit_num(month-1)

while True:

month = input('输入第几个月')

if month.isdigit():

month = int(month)

print('第 %d 个月的兔子数为 %d 对' %(month, rabbit_num(month)))

elif month == 'q':

break

else:

print('输入错误,请重新输入')

结果:

f93744190330

image

实例12

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

分析:先设置一个标志位默认为False,进入循环判断是否为素数,不为素数则置为True,然后将标志位为False的数输出则为所求素数;

代码:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

# @Time : 2018-10-7 19:06

# @Author : Manu

# @Site :

# @File : prime_number.py

# @Software: PyCharm

import math

flag = False

count = 0

for i in range(101, 201):

for j in range(2, int(math.sqrt(i + 1)) + 1):

if i % j == 0:

flag = True

break

if flag == False:

count += 1

print(i, end=' ')

if count % 5 == 0:

print()

flag = False

结果:

f93744190330

image

实例13

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身

分析:对100-1000之内的三位数进行循环,求出这些三位数各自个位、十位、百位上的数,然后将他们的立方和与这个三位数比较,若两者相等则说明这个三位数是水仙花数;

代码:

#!/usr/bin/python3

# -*- coding:utf-8 -*-

# @Time : 2018-10-10 8:25

# @Author : Manu

# @Site :

# @File : narcissistic_num.py

# @Software: PyCharm

print('水仙花数列表:')

for i in range(100, 1000):

ge = i % 10

shi = i // 10 % 10

bai = i // 100

if i == (ge ** 3 + shi ** 3 + bai ** 3):

print(i)

结果:

f93744190330

image

实例14

题目:将一个正整数分解质因数;

分析:

若这个质数恰等于n,则说明分解质因数的过程结束,打印即可;

若n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步;

若n不能被k整除,则用k+1作为k的值,重复执行第一步;

代码:

#!/usr/bin/python3

# -*- coding:utf-8 -*-

# @Time : 2018-10-8 18:41

# @Author : Manu

# @Site :

# @File : Prime.py

# @Software: PyCharm

def prime(n):

print(str(n) + ' = ')

if not isinstance(n, int) or n <= 0 :

print('Please input a valid number !')

exit(0)

elif n in [1] :

print(n)

while n not in [1]:

for index in range(2, int(n + 1)):

if n % index == 0:

n /= index

if n == 1:

print(index)

else :

print(str(index) + " *", end=' ')

break

num = input('Input the num, enter "q" to quit:')

while num != 'q':

prime(int(num))

num = input('Input the num:')

结果:

f93744190330

image

实例15

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

分析:输入成绩,判断是否为数字,是数字则判定属于哪个等级,若不是数字怎根据代码设定返回重新输入成绩或者直接退出程序;

代码:

#!/usr/bin/python3

# -*- coding:utf-8 -*-

# @Time : 2018-10-10 8:33

# @Author : Manu

# @Site :

# @File : score_.py

# @Software: PyCharm

print('输入成绩查看登记,输入"q"则退出')

while True:

score = input('输入你的成绩:')

if score.isdigit():

score_rank = int(score) // 10

if score_rank >= 9:

print('A')

elif score_rank >= 6 and score_rank < 9:

print('B')

else:

print('C')

elif score == 'q':

break

else:

print('输入错误,请重新输入!')

结果:

f93744190330

image

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值