实例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('输入错误,请重新输入')
结果
实例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='\t') if count % 5 == 0: print() flag = False
实例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)
实例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:')
实例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('输入错误,请重新输入!')