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('輸入錯誤,請從新輸入')
  • 結果:

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='\t')
        if count % 5 == 0:
            print()
    flag = False
  • 結果:

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)
  • 結果:

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:')
  • 結果:

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('輸入錯誤,請從新輸入!')
  • 結果:

image

相關文章
相關標籤/搜索