实例11

题目

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

分析

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

代码

  1. #!/usr/bin/python3
  2. # -*- coding:utf-8 -*-
  3. # @Time : 2018-10-10 8:49
  4. # @Author : Manu
  5. # @Site :
  6. # @File : rabbit_num.py
  7. # @Software: PyCharm
  8. def rabbit_num(month):
  9. if month == 1 or month == 2:
  10. return 1
  11. else:
  12. return rabbit_num(month-2) + rabbit_num(month-1)
  13. while True:
  14. month = input('输入第几个月')
  15. if month.isdigit():
  16. month = int(month)
  17. print('第 %d 个月的兔子数为 %d 对' %(month, rabbit_num(month)))
  18. elif month == 'q':
  19. break
  20. else:
  21. print('输入错误,请重新输入')

结果

Python3 编程实例(11 - 15) - 图1

实例12

题目

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

分析

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

代码

  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. # @Time : 2018-10-7 19:06
  4. # @Author : Manu
  5. # @Site :
  6. # @File : prime_number.py
  7. # @Software: PyCharm
  8. import math
  9. flag = False
  10. count = 0
  11. for i in range(101, 201):
  12. for j in range(2, int(math.sqrt(i + 1)) + 1):
  13. if i % j == 0:
  14. flag = True
  15. break
  16. if flag == False:
  17. count += 1
  18. print(i, end='\t')
  19. if count % 5 == 0:
  20. print()
  21. flag = False

结果

Python3 编程实例(11 - 15) - 图2

实例13

题目

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

分析

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

代码

  1. #!/usr/bin/python3
  2. # -*- coding:utf-8 -*-
  3. # @Time : 2018-10-10 8:25
  4. # @Author : Manu
  5. # @Site :
  6. # @File : narcissistic_num.py
  7. # @Software: PyCharm
  8. print('水仙花数列表:')
  9. for i in range(100, 1000):
  10. ge = i % 10
  11. shi = i // 10 % 10
  12. bai = i // 100
  13. if i == (ge ** 3 + shi ** 3 + bai ** 3):
  14. print(i)

结果

Python3 编程实例(11 - 15) - 图3

实例14

题目

将一个正整数分解质因数;

分析

  • 若这个质数恰等于n,则说明分解质因数的过程结束,打印即可;
  • 若n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步;
  • 若n不能被k整除,则用k+1作为k的值,重复执行第一步;

代码

  1. #!/usr/bin/python3
  2. # -*- coding:utf-8 -*-
  3. # @Time : 2018-10-8 18:41
  4. # @Author : Manu
  5. # @Site :
  6. # @File : Prime.py
  7. # @Software: PyCharm
  8. def prime(n):
  9. print(str(n) + ' = ')
  10. if not isinstance(n, int) or n <= 0 :
  11. print('Please input a valid number !')
  12. exit(0)
  13. elif n in [1] :
  14. print(n)
  15. while n not in [1]:
  16. for index in range(2, int(n + 1)):
  17. if n % index == 0:
  18. n /= index
  19. if n == 1:
  20. print(index)
  21. else :
  22. print(str(index) + " *", end=' ')
  23. break
  24. num = input('Input the num, enter "q" to quit:')
  25. while num != 'q':
  26. prime(int(num))
  27. num = input('Input the num:')

结果

Python3 编程实例(11 - 15) - 图4

实例15

题目

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

分析

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

代码

  1. #!/usr/bin/python3
  2. # -*- coding:utf-8 -*-
  3. # @Time : 2018-10-10 8:33
  4. # @Author : Manu
  5. # @Site :
  6. # @File : score_.py
  7. # @Software: PyCharm
  8. print('输入成绩查看登记,输入"q"则退出')
  9. while True:
  10. score = input('输入你的成绩:')
  11. if score.isdigit():
  12. score_rank = int(score) // 10
  13. if score_rank >= 9:
  14. print('A')
  15. elif score_rank >= 6 and score_rank < 9:
  16. print('B')
  17. else:
  18. print('C')
  19. elif score == 'q':
  20. break
  21. else:
  22. print('输入错误,请重新输入!')

结果

Python3 编程实例(11 - 15) - 图5