1. 程式人生 > 其它 >Python實驗報告——第8章 模組

Python實驗報告——第8章 模組

例項01:建立計算BMi指數的模組

   建立一個用於根據身高、體重計算BMI 指數的模組,命名為 bmi.py,其中 bmi為模組名,.py為副檔名。

程式碼如下:

(1)建立一個用於根據身高、體重計算BMI指數的模組

def fun_bmi(person,height,weight):
    '''功能:根據身高和體重計算bmi指數
            person:姓名
            height:身高,單位:米
            weight:體重,單位:千克
    '''
    print(person + "的身高" + str(height) + "米 \t 體重:
" + str(weight) + "千克") bmi = weight/(height*height) print(person + "的BMI指數為:" + str(bmi)) #輸出BMI指數 # 判斷身材是否合理 if bmi < 18.5: print("您的體重過輕 ~@_@~\n") if bmi >= 18.5 and bmi <= 24.9: print("正常範圍,注意保持 (-_-)\n") if bmi >= 24.9 and bmi < 29.9:
print("您的體重過重 ~@_@~\n") if bmi >= 29.9: print("肥胖 ^@_@^\n") def fun_bmi_upgrade(*person): '''功能:根據身高、體重計算BMI指數(升級版) *person:可變引數該引數中需要傳遞帶3個元素的列表, 分別為姓名、身高(單位:米)和體重(單位:千克) ''' for list_person in person: for item in list_person: person
= item[0] # 姓名 height = item[1] # 身高(單位:米) weight = item[2] # 體重(單位:千克) print("\n" + "=" * 13, person, "=" * 13) print("身高:" + str(height) + "米 \t 體重:" + str(weight) + "千克") bmi = weight / (height * height) print("您的BMI指數為:" + str(bmi)) # 輸出BMI指數 # 判斷身材是否合理 if bmi < 18.5: print("您的體重過輕 ~@_@~\n") if bmi >= 18.5 and bmi <= 24.9: print("正常範圍,注意保持 (-_-)\n") if bmi >= 24.9 and bmi < 29.9: print("您的體重過重 ~@_@~\n") if bmi >= 29.9: print("肥胖 ^@_@^\n")

(2)建立一個名稱為main.py的檔案

import bmi                          #匯入bmi模組
bmi.fun_bmi("尹一伊",1.75,120)      #執行模組中的fun_bmi()函式

執行結果如下:

例項02:匯入兩個包括同名函式的模組

   建立兩個模組,一個是矩形模組,其中包括計算矩形周長和麵積的函式;另一個是圓形,其中包括計算圓形周長和麵積的函式。然後在另一個Python檔案中匯入這兩個模組,並呼叫相應的函式計算周長和麵積。

程式碼如下:

(1)建立矩形模組

#rectangle.py
def girth(width, height):
    return (width + height) * 2


def area(width, height):
    return width * height


if __name__ == '__main__':
    print(area(10, 20))

 (2)建立圓形模組

#circular.py
import math
PI = math.pi
def girth(r):
    return round(2*PI*r, 2)

def area(r):
    return round(PI*r*r, 2)

if __name__ == '__main__':
    print(girth(10))

(3)建立檔案

#compute.py
import rectangle as r
import circular as c
if __name__ == '__main__':
    print("圓形的周長為: ", c.girth(10))
    print("矩形的周長為: ", r.girth(10, 20))

執行結果如下:

例項03:在指定包中建立通用的設定和獲取尺寸的模組

  建立一個名稱為settings的包,在該包下建立一個名稱為size的模組,通過該模組實現設定和獲取尺寸的通用功能。(1)在 settings包中,建立一個名稱為size的模組,在該模組中,定義兩個保護型別的全域性變數,分別代表寬度和高度,然後定義一個change()函式,用於修改兩個全域性變數的值,再定義兩個函式,分別用於獲取寬度和高度。(2)在settings包的上一層目錄中建立一個名稱為main.py的檔案,在該檔案中匯入.settings包下的size模組的全部定義,並且呼叫change()函式重新設定寬度和高度,然後再分別呼叫getWidth()和getHeight()函式獲取修改後的寬度和高度。

程式碼如下:

#size.py
_width = 800
_height = 600
def change(w,h):
    global _width
    _width = w
    global _height
    _height = h

def getwidth():
    global _width
    return _width

def getHeight():
    global _height
    return _height
#main.py
from settings.size import *

if __name__ =='__main__':
    change(1024, 768)
    print('寬度: ', getwidth())
    print('高度: ', getHeight())

執行結果如下:

例項04:生成由數字、字母組成的4位驗證碼

  在IDLE中建立一個名稱為checkcode.py的檔案,然後在該檔案中匯入 Python標準模組中的random模組(用於生成隨機數),然後定義一個保仔驗讓碼的受裡,世片 1o書飲A乎書的哈證碼,最後輸出在該迴圈中,呼叫random模組提供的randrange()和 randint()方法生成符合要求的驗證碼,最後輸出生成的驗證碼。

程式碼如下:

import random
checkcode = ""
for i in range(4):
    index = random.randrange(0, 4)
    if index != i and index + 1 != i:
        checkcode += chr(random.randint(97, 122))  # 生成a~z中的一個小寫字母
    elif index + 1 == i:
        checkcode += chr(random.randint(65, 90))  # 生成A~Z中的一個大寫字母
    else:
        checkcode += str(random.randint(1, 9))
print("驗證碼:", checkcode)

執行結果如下:

實戰一:大樂透號碼生成器

  使用Random模組模擬大樂透號碼生成器。選號規則為:前區在1~35的範圍內隨機產生不重複的5個號碼,後區在1~12的範圍內隨機產生不重複的2個號碼。效果如圖8.18所示。

程式碼如下:

import random
def number():
    a=[random.randint(1,35) for i in range(5)]
    list1=[]
    for i in a:
        if i not in list1:
            list1.append(i)
        else:
            i=random.randint(1,35)
            list1.append(i)
        list1.sort()
    a=[str(i) for i in list1]
    b=[random.randint(1,12) for i in range(2)]
    o=[]
    for i in b:
        if i not in o:
            o.append(i)
        else:
            i=random.randint(1,12)
            o.append(i)
        o.sort()
    b=[str(i) for i in o]
    c=[" "*5]
    for i in range(5):
        if len(a[i])==2:
            for j in range(2):
                if len(b[j])==2:
                    pass
                else:
                    b[j]='0'+b[j]
        else:
            a[i]='0'+a[i]
    g=a+c+b
    for i in g:
        print(i,end=" ")
print("大樂透號碼生成器")
k=int(input("請輸入要生成的大樂透號碼注數:"))
for i in range(k):
    number()
    print("")

執行結果如下:

實戰二:春節集五福

最近兩年流行春節集五福活動。現程式設計實現模擬春節集五福的過程。效果如圖8.19所示。

程式碼如下:

import random
# 抽五福的方法
def Ji_fu():
    fus = ['愛國福', '富強福', '和諧福', '友善福', '敬業福']
    fu = random.sample(fus, 1)
    return fu

# 列印當前擁有的所有福
def fus(fu):
    print('當前擁有的福:')
    # 字典的鍵值對遍歷方法 列印福卡
    for i, j in fu.items():
        print(i, ':', j, '\t', end='')
# 判斷是否集齊五福
def fu_ready(fu):
    # 設定一個集齊的標識flag,等於1表示集齊了
    flag = 1
    for i,j in fu.items():
        if j == 0:     # 有一個福卡的數量為0
            flag = 0   # 標識為0,可以繼續集福
    return flag
print('開始集福了…………')
# 定義一個五福字典 儲存使用者的福卡
fu = {'愛國福': 0, '富強福': 0, '和諧福': 0, '友善福': 0, '敬業福': 0}
# 用一個while語句迴圈獲取五福,直到集齊為止
count = 0   # 設定一個計數器,記錄集福的次數
while fu_ready(fu) == 0:  # 集齊標識為0
    input("\n按下<enter>鍵獲取福卡:")
    getfu = Ji_fu()[0]    # 進行抽卡
    print('獲取了:', getfu)
    fu[getfu] += 1             # 將抽到的卡加入五福字典,相應數量+1
    fus(fu)               # 呼叫方法列印當前擁有的五福
    fu_ready(fu)          # 呼叫方法判斷是否集齊
    count +=1
print("\n***五福已經集齊,真是有福之人***")
print("一共集福",count,'')

 執行結果如下:

實戰三:封裝使用者的上網行為

  當下很多人都會用一定的時間上網。現程式設計實現封裝使用者的上網行為,對使用者的上網時間進行統計,當上網時間過長時,給出提示。效果如圖8.20所示。

程式碼如下:

# 網頁瀏覽時間統計
def web(time):
    print("瀏覽網頁:"+str(time)+"小時;")
    return time
# 看視訊時間統計
def video(time):
    print("看視訊:"+str(time)+"小時;")
    return time
# 玩網路遊戲時間統計
def playgame(time):
    print("玩網路遊戲:"+str(time)+"小時;")
    return time
# 上網學習時間統計
def study(time):
    print("上網學習:"+str(time)+"小時。")
    return time
# 合計上網時間統計
def total(time):
    print('今天上網時間共計:'+str(time)+"小時,",end=' ')
    if time >= 8:
        print("請保護眼睛,合理安排上網時間!")
    else:
        print("比較合理,但也要注意休息!")


name = '小明'
print(name, '上網時間、行為統計……')
t1 = web(1.5)
t2 = video(2)
t3 = playgame(3)
t4 = study(2)
time = t1 + t2 + t3 + t4
total(time)

 執行結果如下:

實戰四:計算個人所得稅

  編寫一個計算個人所得稅的程式,隨時掌握自己的工資需要繳納多少個人所得稅。效果如圖8.21所示。

程式碼如下:

# 根據月收入算個稅模組
def tax(monthmoney):
    # 最低起徵點3500
    ds = 3500
    baoxian = 7662
    # 養老保險
    yanglao = monthmoney * 0.08
    # 醫療保險
    yiliao = monthmoney * 0.02
    # 失業保險
    shiye = monthmoney * 0.005
    # 公積金
    housem = monthmoney * 0.12
    # 計算三險一金總額,如超過上限按上限算
    demoney = yanglao + yiliao + shiye + housem
    if demoney >= 7662:
        demoney = 7662
    # 計算應徵稅額
    lastmoney = monthmoney - demoney - ds
    # 按不同檔次徵稅,定義稅額taxes
    if lastmoney <= 0:
        taxes = 0
    elif 0< lastmoney < 1500:
        taxes = lastmoney * 0.03
    elif 1500 <= lastmoney < 4500:
        taxes = lastmoney * 0.1 - 105
    elif 4500 <= lastmoney < 9000:
        taxes = lastmoney * 0.2 - 555
    elif 9000 <= lastmoney < 35000:
        taxes = lastmoney * 0.25 - 1005
    elif 35000 <= lastmoney < 55000:
        taxes = lastmoney * 0.3 - 2002
    elif 55000 <= lastmoney < 80000:
        taxes = lastmoney * 0.35 - 5505
    elif 80000 <= lastmoney:
        taxes = lastmoney * 0.45 - 13505
    # if lastmoney < 0:
    #     taxes = 0
    return taxes


m = float(input("請輸入您的月收入總額:"))
taxes = tax(m)
print('您應徵個人所得稅金額為:{:.2f} 元'.format(taxes))

執行結果如下: