學習如何使用Python的內置函數。快速使用函數的參數和返回值。


一、實驗目的與要求

1、理解函數的概念,掌握Python語言中聲明和調用函數的方法。

2、理解局部變量和全局變量的作用域,學習在調試窗口查看變量的值。

3、學習使用函數的參數和返回值。

4、學習如何使用Python的內置函數。

二、實驗原理

函數是組織好的,可重復使用的,用來實現單一或相關聯功能的代碼段,它能夠提高應用的模塊性和代碼的重復利用率。Python定義函數使用def關鍵字,格式如下:

def 函數名(參數列表):

函數體

定義了函數之后,想要讓函數中的代碼能夠執行,需要調用函數。通過“函數名()” 即可完成調用。

在定義函數的時候,讓函數接收數據,這就是函數的參數。調用函數時,如果沒有傳遞參數,則會使用默認參數。有時可能需要一個函數能處理比當初聲明時更多的參數,這些參數叫做不定長參數,聲明時不會命名。函數的返回值是使用return語句來完成的。根據函數的參數和返回值,函數可以分為:無參數,無返回值的函數、無參數,有返回值的函數、有參數,無返回值的函數以及有參數,有返回值的函數四種類型。在一個函數中調用了另外一個函數,這就是所謂的函數嵌套調用。

為了避免變量的名稱發生沖突,所以Python引入了命名空間的概念。命名空間指的是名稱到對象的映射,類似於字典,鍵名是變量的名字,值是變量的值。命名空間是相互獨立存在的,而且它們被安排在某個特定的層次,把這些層次結構組合起來就是作用域。所謂局部變量,就是在函數內部定義的變量,局部變量的作用域是函數內部,意味着它只在定義它的函數中有效,一旦函數結束就會消失;定義在函數外的擁有全局作用域。全局變量可以在整個程序范圍內訪問。如果出現全局變量和局部變量名字相同的情況,則在函數中訪問的是局部變量。

一個函數的內部可以調用其他函數。但是,如果一個函數在內部不調用其它的函數,而是自己本身的話,這個函數就是遞歸函數。匿名函數就是沒有名稱的函數,也就是不再使用def語句定義的函數。如果要聲明匿名函數,則需要使用lambda關鍵字,匿名函數的聲明格式如下所示:

lambda [arg1 [,arg2,.....argn]]:expression

 

有一點需要注意的是:使用Lambda聲明的匿名函數能接收任何數量的參數,但只能返回一個表達式的值。匿名函數不能直接調用print,因為lambda需要一個表達式。

在Python中,通常有如下幾種方式表示時間:
(1)時間戳;
(2)格式化的時間字符串;
(3)時間元組(struct_time)。通常來講,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們可以使用time模塊的strftime方法來格式化日期。返回struct_time的函數主要有gmtime()、localtime()和strptime(),struct_time元組。Calendar模塊有廣泛的方法用來處理年歷和月歷,例如:

calendar.calendar(year,w=2,l=1,c=6);#返回一個多行字符串格式的year年年歷,3個月一行,間隔距離為c。每日寬度間隔為w字符。每行長度為21* W+18+2* C。l是每星期行數。

Python中的random模塊用於生成隨機數,它提供了很多函數。主要有:
(1)random.random():用於生成一個0到1的隨機符點數: 0 <= n < 1.0;
(2)random.uniform(a,b):返回a,b之間的隨機浮點數,范圍[a,b]或[a,b]取決於四舍五入,a不一定要比b小;
(3)random.randint(a,b):返回a,b之間的整數,范圍[a,b],注意:傳入參數必須是整數,a一定要比b小;
(4)random.randrang([start], stop[, step]):返回有個區間內的整數,可以設置step。只能傳入整數,random.randrange(10, 100, 2),結果相當於從[10, 12, 14, 16, … 96, 98]序列中獲取一個隨機數;
(5)random.choice(sequence):從sequence(序列,是有序類型的)中隨機獲取一個元素,列表、元組、字符串都屬於sequence;
(6)random.shuffle(x[,random]):用於將列表中的元素打亂順序,俗稱為洗牌;
(7)random.sample(sequence,k):從指定序列中隨機獲取k個元素作為一個片段返回,sample函數不會修改原有序列。

三、預習與准備

1、提前預習Python函數的語法知識,實驗之前編寫好程序代碼。

2、練習使用Python函數的常見操作。

四、實驗過程記載

(對實驗的主要過程與步驟進行記載;若有較多的截圖或代碼,可以單獨用附件的形式列出)

實驗題1分析程序運行結果:閱讀下面的程序,分析代碼是否能夠編譯通過。如果能編譯通過,請列出運行的結果,否則請說明編譯失敗的原因。

(1)def func():

 x = 200

 x = 100

func()

print(x)

 

能編譯通過
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
實驗題2
定義一個getMax函數,返回三個數(從鍵盤輸入的整數)中的最大值。例如:輸出的內容如下所示:

請輸入第1個整數:10

請輸入第2個整數:15

請輸入第3個整數:20

其中最大值為:20

源碼:

def getMax():
    a1 = eval(input("請輸入第1個整數:"))
    a2 = eval(input("請輸入第2個整數:"))
    a3 = eval(input("請輸入第3個整數:"))
    print(max(a1,a2,a3))

getMax()

 

在這里插入圖片描述
實驗題3
使用Python語言開發一個簡單的名片管理器程序。請使用Python函數完成各種功能,並且根據鍵盤的輸入來選擇對應的函數完成這些功能。名片管理器的主菜單系統如下圖所示:

名片管理系統 v8.8


1.添加名片

2.刪除名片

3.修改名片

4.查詢名片

5.獲取所有名片信息

6.退出系統


請輸入選擇的序號:

def display_menu():
    print("-" * 30)
    print("   名片管理系統   v8.8")
    print("1. 添加名片")
    print("2. 刪除名片")
    print("3. 修改名片")
    print("4. 查詢名片")
    print("5. 獲取所有名片信息")
    print("6. 退出系統")
    print("-" * 30)


# 獲取用戶輸入的信息
def get_choice():
    selected_key = input("請輸入選擇的序號:
")
 return int(selected_key)

# 添加名片
def add_info():
 new_name = input("請輸入姓名:")
 name_list.append(new_name)


# 查看所有名片的信息
def print_all_info(temp_list):
 print("=" * 30)
 for info in temp_list:
 print(info)
 print("=" * 30)

# 刪除名片
def delete():
 delete_name = input("請輸入你要刪除的姓名:")
 if delete_name in name_list:
 name_list.remove(delete_name)
 print("刪除成功!")
 else:
 print("輸入錯誤,刪除的姓名不存在!")

# 修改名片
def update():
 update_name = input("請輸入你要修改的姓名:")
 if update_name in name_list:
 new_name = input("請輸入修改后的名字:")
 name_list[name_list.index(update_name)] = new_name
 else:
 print("輸入錯誤,修改的姓名不存在!")

# 查詢名片
def find():
 find_name = input("請輸入你查詢的姓名:")
 if find_name in name_list:
 print("查詢的姓名存在!")
 else:
 print("查詢的姓名不存在!")

i = 0
name_list = []
while i < 1:
 # 打印菜單
 display_menu()

 # 等待用戶選擇
 key = get_choice()
 if key == 1:
 add_info()
 elif key == 2:
 delete()
 elif key == 3:
 update()
 elif key == 4:
 find()
 elif key == 5:
 print_all_info(name_list)
 elif key == 6:
 break
 else:
 print("輸入有誤,請重新輸入...") 

 

在這里插入圖片描述
實驗題4
使用Python語言開發一個簡單的學生管理系統。運用該學生管理系統編輯學生的信息,適時更新學生的資料。例如,新生入校,要在學生管理系統中錄入剛入校的學生信息。請實現一個學生管理系統,要求如下。

(1)使用自定義函數,完成對程序的模塊化;

(2)學生信息至少包含:姓名、性別及手機號;

(3)該系統具有的功能:添加、刪除、修改、顯示、退出系統。

(詳細要求參見教材P130至P134的§6.12中的說明)

(選做)

源碼:

studentInfos = []

 #打印菜單
def printMenu():
   print("=" * 30)
   print("  學生管理系統")
   print("1.添加學生信息")
   print("2.刪除學生信息")
   print("3.修改學生信息")
   print("4.顯示所有學生信息")
   print("0.退出系統")
   print("=" * 30)

#添加學生信息
def addStudent():
   newName = input("請輸入新的學生名字:")
   newSex = input("請輸入新的學生性別(男/女):")
   newPhone = input("請輸入新的學生電話:")
   newInfo = {}
   newInfo["name"] = newName
   newInfo["sex"] = newSex
   newInfo["phone"] = newPhone
   studentInfos.append(newInfo)

#刪除學生信息
def delStudent(info):
   delNum = int(input("請輸入要刪除的序號:")) - 1
   del info[delNum]


#修改學生信息
def modifyStudent():
   studentId = int(input("請輸入要修改的序號:")) - 1
   newName = input("請輸入新的學生名字:")
   newSex = input("請輸入新的學生性別(男/女):")
   newPhone = input("請輸入新的學生電話:")
   newInfo = {}
   newInfo["name"] = newName
   newInfo["sex"] = newSex
   newInfo[
"phone"] = newPhone
 studentInfos[studentId] = newInfo

#查看所有學生信息
def showStudent():
 print("=" * 30)
 print("學生信息如下")
 print("=" * 30)
 print("序號 姓名 性別 手機號")
 num = 1
 for tempInfo in studentInfos:
 print(" %d %s %s %s"%(num,tempInfo["name"],tempInfo["sex"],tempInfo["phone"]))
 num += 1

#main函數
def main():
 while 1 == 1:
 printMenu()
 key = int(input("請輸入操作的序號:"))
 if key == 1:
 addStudent()
 elif key == 2:
 delStudent(studentInfos)
 elif key == 3:
 modifyStudent()
 elif key == 4:
 showStudent()
 elif key == 0:
 exit = input("真的要退出系統嗎?(Yes or No):")
 if exit == "Yes":
 break
 elif exit == "No":
 pass
 else:
 print("輸入有誤,請重新輸入")
 else:
 print("輸入有誤,請重新輸入")

main() 

 

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM