专栏首页技术开发——你我他实验四 Python函数编程实验
原创

实验四 Python函数编程实验

实验四 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)def func():

global x

x = 200

x = 100

func()

print(x)

能编译通过

(3)def func():

x = 200

def func2():

print(x)

func2()

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()

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实验五 Python文件操作实验

    在python中,使用open方法打开文件,凡是打开的文件,切记要使用close方法关闭文件。向文件写数据,需要使用write方法来完成,在操作某个文件时,每调...

    背雷管的小青年
  • Python杂谈(4)—— 简述函数式编程

    背雷管的小青年
  • Python杂谈(3)——BeautifulSoup库全面介绍

    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Be...

    背雷管的小青年
  • 5.python函数

    函数介绍 定义:  函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。 特性:减少重复代码、使程序变的可扩展、使程...

    zhang_derek
  • Python闭包函数和装饰器

    1.概念:在一个外函数中定义了一个内函数,内函数运用了外函数的临时变量,并且外函数的返回值是内函数的引用 示例代码:演示函数嵌套和闭包。

    潇洒坤
  • Python3匿名函数字典排序、生成式与

    参数类型: 我们经常在看别人的代码中,经常出现def(*args,**kwargs)这样的表现形式;

    py3study
  • python之抽象一

    num = input('How many Fibonacci numbers do you want?')

    py3study
  • python基础-函数(9)

    如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数

    Se7eN_HOU
  • Python基础之函数和模块

    在函数定义下的第一行,添加连续的三对双引号,在双引号中间进行文字注释; 在函数调用处可以用ctrl+q,查看函数说明。 注释如下:

    py3study
  • python-函数基础

    def test(): a = 10 ​ # 不能再函数外部使用,此处会报错 print(a)

    py3study

扫码关注云+社区

领取腾讯云代金券