当前位置: 首页 > news >正文

使用函数制作一个简易的计算机

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:机器学习

🅰

请添加图片描述


文章目录

    • 🅰
    • 前言
    • 🎶一、函数的定义
    • 🎶二、函数的调用
    • 🎶三、函数的返回值
    • 🎶 四、函数的参数
      • 1.实参和形参
      • 2.参数类型
        • 结束语🥇


前言

  在实际开发过程中,经常会遇到很多完全相同或非常相似的操作。此时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。本项目将详细介绍Python中函数的使用方法。


🎶一、函数的定义


   简易计算器要实现的功能是对两个数进行加法、减法、乘法或除法运算,每种运算都可以通过一个函数实现。本任务将带领大家编写Python程序,制作简易计算器。

   函数是一段具有特定功能的、可重复使用的代码,它能够提高程序的模块化和代码的复用率。因此,可以将不同功能的函数看作是不同形状的积木,可进行随意拼接和重复使用。Python提供了很多内置函数,如print()、input()、int()函数等,以及标准库函数,如math库中的sqrt()函数等。除此之外,用户还可以自己定义函数,称为自定义函数。

   Python中定义函数的基本语法格式如下。在实际开发过程中,为提高代码的可读性,会经常使用以下3种命名方式:

def 函数名([形式参数列表]):
函数体

  其中,def是Python的关键字,用于定义函数;函数名可以是任何合法的Python标识符;形式参数列表(简称形参)是调用该函数时传递给函数的参数,可以是零个、一个或多个,当传递多个参数时各参数之间使用逗号隔开,[ ]表示可选内容;函数体是每次调用函数执行的代码,由一行或多行语句组成。定义函数时须注意以下几点。
  (1)当函数参数为零个时,也必须保留一对空的圆括号。
  (2)圆括号后面的冒号不能省略。
  (3)函数体相对于def关键字必须保持一定的空格缩进。
  例如,定义名为eat()的函数,该函数的功能是输出“吃饭”字符串,可以用下面代码实现。

def eat():
        print('吃饭')

🎶二、函数的调用


   函数定义后,须调用函数才能执行函数体,实现特定的功能。函数调用的基本语法格式如下 作用是同时将1赋值给变量a、b和c,相当于:

函数名([实际参数列表])

其中,实际参数列表(简称实参)表示要传递给函数的具体值。
【例】 小蓝的日常活动
【问题分析】 定义函数封装日常活动,然后按作息时间调用函数。例如,定义eat()函数,输出“吃 饭…”,定义school()函数输出“上课…”等。

def eat():				#定义eat()函数,表示吃饭print('吃饭......')
def school():				#定义school()函数,表示上课print('上课......')
def homework():				#定义homework()函数,表示做作业print('做作业......')
def exercise():				#定义exercise()函数,表示运动print('运动......')
print('小蓝的日常活动')
#按作息时间调用函数
eat()
school()
eat()
school()
exercise()
eat()
homework()

运行结果:
在这里插入图片描述
   由于函数只有在调用时才执行,因此,前面定义函数的代码不会直接执行。当调用函数时,当前执行暂停,转去执行函数体。当函数执行完毕后,重新回到调用函数位置,继续执行后面的语句。


🎶三、函数的返回值


  函数除了可以在函数体中直接输出数据,还可以返回一个或多个值,称为函数的返回值。在Python中,函数使用return语句返回值。
  return语句用于退出函数并将程序返回到函数调用的位置继续执行,同时返回零个、一个或多个值。

【例】 小蓝的日常活动。
【问题分析】 定义函数封装日常活动,然后按作息时间调用函数。例如,定义eat()函数,
输出“吃 饭…”,定义school()函数输出“上课…”等。
【运行代码】

def eat(time):					#定义eat()函数,参数为时间time#如果time在6点~8点,返回吃早饭if time >= 6 and time <= 8:return '{}点吃早饭......'.format(time)#如果time在11点~13点,返回吃午饭elif time >= 11 and time <= 13:return '{}点吃午饭......'.format(time)#如果time在17点~19点,返回吃晚饭elif time >= 17 and time <= 19:return '{}点吃晚饭......'.format(time)else:						#不满足上述条件,返回不在吃饭时间return '不在吃饭时间'
time = int(input('请输入时间:'))	                             #输入时间,并转换为int型赋给time
print(eat(time))				              #调用eat()函数,输出返回值

运行结果:
在这里插入图片描述
   如果函数没有return语句,将默认以return None结束,即返回空值。函数也可以使用return语句返回多个值,每个值之间使用逗号隔开。函数调用后,返回值以元组形式保存。
   【例】 计算小蓝的最低成绩、最高成绩和总成绩。
   【问题分析】 定义函数score_compute(),参数为小蓝的各科成绩,使用min()函数计算最小值,max()函数计算最大值,然后返回最小值、最大值及总成绩。
【运行代码】

#定义score_compute()函数
def score_compute(chinese, math, english):#使用min()函数计算最小值,并赋给score_minscore_min = min(chinese, math, english)#使用max()函数计算最大值,并赋给score_maxscore_max = max(chinese, math, english)#计算总成绩,并赋给score_totalscore_total = chinese + math + english#返回score_min、score_max和score_totalreturn score_min, score_max, score_total#输入各科成绩
chinese = float(input('请输入语文成绩:'))
math = float(input('请输入数学成绩:'))
english = float(input('请输入英语成绩:'))
#调用score_compute()函数,并将返回值赋给score
score = score_compute(chinese, math, english)
print(score, type(score))			 #输出score及其类型
print('小蓝的最低成绩为:', score[0],'\n小蓝的最高成绩为:', score[1],'\n小蓝的总成绩为:', score[2])#输出最低成绩、最高成绩和总成绩

【运行结果】 程序运行结果如图所示。
在这里插入图片描述
  本例题中return语句返回多个值,通过语句“print(score, type(score))”输出变量score及其类型,可以看出,多个值以元组形式保存。因此,可以通过下标来访问元组中的元素,从而分别得到最低成绩、最高成绩和总成绩。


🎶 四、函数的参数


1.实参和形参

   定义函数时,圆括号内的参数为形参;调用函数时,圆括号内的参数为实参,根据参数的不同数据类型,将实参的值或引用传递给形参。
   在Python中,函数参数的数据类型可分为不可变数据类型(如整数、浮点数、字符串、元组等)和可变数据类型(如列表、字典、集合等)。当参数的数据类型为不可变数据类型时,在函数内直接修改形参的值不会影响实参。

【例】 阅读下面程序,分析输出结果。

【运行代码】

def change(a):a = 10print('函数内a =', a)
a = 2
change(a)
print('函数外a =', a)

【运行结果】程序运行结果如图所示。
在这里插入图片描述
   从运行结果可以看出,在函数内修改了形参a的值,但是当函数运行结束后,实参a的值并没有改变。但当参数的数据类型为可变数据类型时,在函数内使用下标或其他方式增加、删除或修改元素时,实参也会相应地修改。

【例】 阅读下面程序,分析输出结果。

【运行代码】

def change(mylist):mylist.append([1, 2, 3, 4])print('函数内mylist = ', mylist)
mylist = [10, 20, 30]
print('调用函数前,函数外mylist = ', mylist)
change(mylist)
print('调用函数后,函数外mylist = ', mylist)

【运行结果】程序运行结果如图所示。
在这里插入图片描述
   从运行结果可以看出,在函数内修改了形参mylist的元素,当函数运行结束后,实参mylist的值也修改了。

2.参数类型

在Python中,函数有多种参数类型,包括位置参数、默认值参数、关键字参数和不定长参数。
1)位置参数
位置参数是比较常用的形式,调用函数时,实参和形参的顺序应一致,且实参和形参的数量必须相同。
【例】 定制问候语。对不同的人说不同的问候语。
【问题分析】 定义函数greet(name, say),其中,name表示人名,say表示问候语。
【运行代码】

def greet(name, say):print(name, say)
greet('小蓝', '你好!')
greet('hello!', '小舞')
greet('小明')

【运行结果】程序运行结果如图所示。
在这里插入图片描述
   当第一次调用greet()函数时,将实参“小蓝”和“你好!”分别传递给形参name和say,实现输出。当第二次调用greet()函数时,将实参“hello!”和“小舞”分别传递给形参name和say,虽然也可以正常输出,但实参和形参的含义不一致,将会影响数据的理解和使用,因此,位置参数的实参和形参的顺序须一致。当第三次调用greet()函数时,实参和形参的数量不同,程序运行到该条语句时提示错误信息(缺少要求的位置参数say)。

2)默认值参数
   在定义函数时,可以为函数的参数设置默认值,此参数称为默认值参数。在调用带默认值参数的函数时,可以不用为默认值参数传值,此时函数将会直接使用函数定义时设置的默认值,也可以通过显式赋值来替换其默认值。定义带有默认值参数函数的基本语法格式如下。

def 函数名(……,形参名=默认值):
函数体

【温馨提示】
   在定义带有默认值参数的函数时,默认值参数必须出现在函数形参列表的最右端,否则会提示语法错误。例如,下面函数的定义是错误的。

def f(a = 1, b, c = 3):
print(a, b, c)

   &emsp;&emsp;  还可使用“函数名.__defaults__”查看函数所有默认值参数的当前值,其返回值为一个元组,其中的元素依次表示每个默认值参数的当前值。

【例】 使用不可变数据类型设置默认问候语。
【运行代码】

def greet(name, say='hi!'):		#设置默认问候语为“hi!”print(name, say)
print(greet.__defaults__)			#输出函数默认值参数
greet('小蓝', '你好!')
greet('小舞', 'hello!')
greet('小红')
greet('小明')

【运行结果】程序运行结果如图所示。
在这里插入图片描述
   多次调用函数且不为默认值参数传递值时,默认值参数只在定义时进行一次解释和初始化,而对于列表、字典等可变数据类型的默认值参数,可能会导致逻辑错误。因此,一般来说,要避免使用列表、字典、集合或其他可变数据类型作为函数参数的默认值。

【例】 使用可变数据类型设置默认问候语。
【运行代码】

def greet(name, say=['hi!']):		#使用列表设置默认问候语say.append('见到你很开心')			#列表添加元素print(name, say)
greet('小蓝', ['你好!'])
greet('小舞', ['hello!'])
greet('小明')
greet('小红')

【运行结果】程序运行结果如图所示。
在这里插入图片描述
  使用列表作为默认值参数,且连续多次调用该函数而不给该参数传值时,再次调用将保留上一次调用结果。因此,执行语句“greet(‘小红’)”时,输出的列表say中包含两个“见到你很开心”,即在上一次调用结果的基础上增加了同一元素。
   此外,如果在定义函数时某个参数的默认值为一个变量,那么参数的默认值只取决于函数定义时该变量的值。

【例】 使用变量设置默认问候语。
【运行代码】

s = 'hi!'
def greet(name, say=s):print(name, say)
s = '你好!'
greet('小蓝')

【运行结果】程序运行结果如图所示。
在这里插入图片描述
  函数的默认值参数只会初始化一次,即在函数定义时就确定值,所以,在定义函数greet()时,s的值为“hi!”,因此输出为“小蓝 hi!”。

3)关键字参数
  关键字参数是指调用函数时按参数名传递值。使用关键字参数允许函数调用时参数的顺序与定义时不一致,Python解释器能够使用参数名匹配参数值。
【例】 使用关键字参数设置问候语。
【运行代码】

def greet(name, say):print(name, say)
greet('你好!', '小蓝')
greet(say='hello!', name='小舞')

【运行结果】程序运行结果如图所示。
在这里插入图片描述
4)不定长参数
  通常在定义一个函数时,若希望函数能够处理比定义时更多的参数,此时可在函数中使用“*”或“**”符号表示不定长参数,其基本语法格式如下。

def 函数名([形参列表,] *args, **kwargs):
函数体

【例】使用不定长参数同时和多人说问候语。
【运行代码】

def greet(say, *names, **name_say):print('say:', say)print('names:', names)print('name_say:', name_say)for name in names:print(name, say)for key in name_say.keys():print(key, name_say[key])
greet('hi!', '小蓝', '小舞', 小红='你好!', 小明='hello!')

【运行结果】程序运行结果如图所示。
在这里插入图片描述
  在调用greet()函数时,传入多个值,这些值会自左往右依次匹配函数定义时的参数,首先将“hi!”传递给say,接着将“‘小蓝’, ‘小舞’”组成一个元组,传递给names,最后将“小红=‘你好!’, 小明=‘hello!’”转换为字典传递给name_say。

结束语🥇

以上就是机器学习
持续更新机器学习教程,欢迎大家订阅系列专栏🔥机器学习
你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述


http://www.mrgr.cn/news/54524.html

相关文章:

  • ruoyi域名跳转缓存冲突问题(解决办法修改:session名修改session的JSESSIONID名称)
  • Java 中的【初始化块】
  • 《Redis实战》note-8 构建简单的社交网站
  • 每日回顾:简单用C写 归并排序
  • 详解Shell脚本与Ansible自动化工具差异
  • Flink窗口分配器WindowAssigner
  • Python学习的自我理解和想法(17)
  • 巴西税收政策及主要税收
  • 诺贝尔物理学奖与机器学习、神经网络:一场跨时代的融合与展望
  • 【YOLO目标检测道路破损检测数据集】共665张、已标注txt格式、有训练好的yolov5的模型
  • PPT自动化:掌握 python-pptx 的基础元素
  • iOS -- 代码优化
  • 多IP访问多网段实验
  • 12、论文阅读:SpikeYOLO:高性能低能耗目标检测网络
  • 靠卡车赚钱,小马智行等待Robotaxi的春天
  • C语言代码风格指南:最佳实践与应用
  • 每日一练:贪心-K 次取反后最大化的数组和
  • csp普及组算法集训--Dfs
  • 电子元器件7805
  • 使用Maven前的简单准备
  • 小白也能剪出优秀视频:四大视频剪辑工具推荐!
  • gc current/cr block request类等待事件
  • 变量类型总是定义在变量前面吗?如何理解typedef定义的类型?
  • 使用Markdown-it插件实现在页面渲染markdown
  • 汽车票在线预订:SpringBoot技术实践
  • 包子凑数