實例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('輸入錯誤,請從新輸入')
![image](http://static.javashuo.com/static/loading.gif)
實例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
![image](http://static.javashuo.com/static/loading.gif)
實例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)
![image](http://static.javashuo.com/static/loading.gif)
實例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:')
![image](http://static.javashuo.com/static/loading.gif)
實例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('輸入錯誤,請從新輸入!')
![image](http://static.javashuo.com/static/loading.gif)