《假如编程是魔法之零基础看得懂的Python入门教程 》——(七)我把魔法变成了积木

学习目标

  1. 了解魔法积木的使用——自定义函数
  2. 了解魔法积木的结果反馈——自定义函数返回值
  3. 了解魔法积木的原料传递——自定义函数传参
  4. 了解魔法积木的类型分类——类与对象

推荐

1.《备受好评的看得懂的C语言入门教程》

目录

第一篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(一)既然你选择了这系列教程那么我就要让你听得懂
第二篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(二)魔法实习生第一步了解魔杖的使用
第三篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(三)使用初始魔法跟编程魔法世界打个招呼吧
第四篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型
第五篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑
第六篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大
本系列教程将会以一种“魔法世界”的形式编写,欢迎各位支持。

欢迎大家关注公众号,公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍2份哟~并且公众号会更快更新哟。
在这里插入图片描述

一、了解魔法世界中的积木

我们通过之前章节的学习了解了一些基本的python编程,但是在我们编写代码过多的时候,将会导致代码杂乱,并且整体逻辑不便于查看,出现一个错误则需要通过较多的流程去排错。那么我们的代码有一部分是通过积木搭建的方式组合成代码,弱一部分出错,就会很快的定位错误在哪一个积木块里面,这时就只需要修改那个积木内的代码就可以修正错误。这样做是不是就可以极的使我们的代码结构清晰,并且易于修改错误了呢?答案当然是对的。

1.1 了解自定义函数的编写

我们在编写一个点餐系统的时候,若经常会提示菜单栏,让用户进行选择。若用户进入了其它页面,再返回首页的时候又需要出新菜单的提示,那我们又需要重新输出一次。这样是不是就特别麻烦?我们可以看看以下示例:

print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')c=int(input('请输入菜单序号:'))
if c:print('正在连接付款...')b=input('任意键返回...')if b:print('正在返回...')print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')

以上示例只是作为模拟当时情景,代码不作为功能的参考。代码最开始,提示了菜单内容,代码如下:

print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')

提示内容后,接收用户输入一个值。用户输入的值,在此输入任意值均可,判断代码的编写:

if c:

以上代码对c变量进行判断,只要不是为空,那么任意数字都行。在python中,空的值最终判断为False假,若有值都将为True真。随后模拟连接支付系统,长时间则随意输入一个值确定后返回:

c=int(input('请输入菜单序号:'))
if c:print('正在连接付款...')b=input('任意键返回...')if b:print('正在返回...')

接着再重新将菜单栏输出。这是的菜单栏明显是重复的代码,使用了两次;这样的代码看起来是不是太繁琐了?简直从视觉上就增加了难度。不过不用担心,python提供了自定义函数让我们解决这个问题。自定义函数表示自己可以定义的功能块,这个功能块可以重复使用,这个功能块可以有多条代码组成。

现在我们将菜单栏定义成一个自定义函数。定义成一个自定义函数的语法为def开头,后接一个空格;空格后接一串字符表示该功能块的名称;随后一堆圆括号,在圆括号后打上一个冒号。代码如下:

def caidan():

以上代码使用def开头,表示我要编写一个自定义函数,随后接上名称caidan,之后接一堆圆括号,一个冒号结束;接下来需要在函数中编写函数的代码,此时我们需要统一缩进格式,至少有一个:

def caidan():#这里写caidan这个功能的代码#这里写caidan这个功能的代码

我们可以直接把菜单提示的代码全部复制黏贴到这个自定义函数caidan中:

def caidan():
print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')

那如上编写对了吗?错了!一定要记得自定义函数后,你需要编写该函数的功能一定要紧接着在函数名下使用缩进表示结构;所以该代码的正确写法应该如下:

def caidan():print('请选择你要吃的食物序号进去付款')print('1.宫保鸡丁')print('2.香辣鸡翅')print('3.糯米饭')print('3.饺子')print('4.沙县经典三件套')print('5.五花八门大丸子')

这是自定义函数功能已经编写完毕,那如何使用呢?很简单,你们应该记得print的使用方法吧?print和input都是函数,这些是系统自带的函数;它们的使用方法是在函数名后加一对括号。如input();我们自己编写的函数使用方法一致,直接函数名后加一对括号就可以完成自定义函数的使用,如:caidan()。先看这一部分的完整代码:

def caidan():print('请选择你要吃的食物序号进去付款')print('1.宫保鸡丁')print('2.香辣鸡翅')print('3.糯米饭')print('3.饺子')print('4.沙县经典三件套')print('5.五花八门大丸子')caidan()
c=int(input('请输入菜单序号:'))
if c:print('正在连接付款...')b=input('任意键返回...')if b:print('正在返回...')print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')

以上代码在头部就定义了自定义函数caidan,并且在caidan函数中编写了功能;在函数下的代码第一行,直接使用了caidan()调用函数,这是caidan()就等于函数内的代码:

print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')

在程序运行时应该显示函数中的代码运行结果:
在这里插入图片描述

从运行结果上可以得知,使用caidan()替代了那一大串代码,那我们也可以把原本代码中的底部的菜单提示给取消;代码如下:

def caidan():print('请选择你要吃的食物序号进去付款')print('1.宫保鸡丁')print('2.香辣鸡翅')print('3.糯米饭')print('3.饺子')print('4.沙县经典三件套')print('5.五花八门大丸子')caidan()
c=int(input('请输入菜单序号:'))
if c:print('正在连接付款...')b=input('任意键返回...')if b:print('正在返回...')caidan()

运行结果:
在这里插入图片描述
运行结果一致,但是代码少了很多,看起来就清爽多了。

1.2 了解有参数的自定义函数

还记得我们前几节内容中完成的两个数做加法运算的内容吗?需求是用户输入两个整数,计算机自动算出两个数之和,并且会显示出来告知我们。我们可以使用函数完成这个功能,方便我们之后需要使用到该功能的时候直接调用这个函数就可以了。

首先我们定义个函数,名为jiafa:

def jiafa():

这个函数需要传入两个值,函数只负责做加法运算,那如何编写呢?这时需要哦们添加两个参数,参数是指你需要用于“计算”的数字;就像平常你使用电饭锅,电饭锅的参数可以是米和水,因为电饭锅的作用是做饭,没米没水怎么做饭?我们的两数加法函数也一样,没有数字怎么样进行计算?所以我们需要传入两个值,这两个值就是参数。参数写在jiafa后的圆括号内;参数我们可以使用两个变量代替,例如数1变量:s1,数2变量:s2,那么代码为:

def jiafa(s1,s2):

这样就表示这个函数可以传入2个参数,当然可以更多参数,在此只是做为一个举例。传入多个参数需要使用逗号对参数进行间隔。接收数后我们接下来就可以开始对这两个变量进行计算。两个变量相加那就是:

print(s1+s2)

完整jiafa函数代码为:

def jiafa(s1,s2):print(s1+s2)

那如何使用呢?还记得print怎么传参数吗?print需要将显示的值传入到圆括号中;自定义函数的参数传递也是类似。我们传入两个数,一个1和一个10,代码写成:

jiafa(1,10)

完整代码如下:

def jiafa(s1,s2):print(s1+s2)jiafa(1,10)

运行结果为:
在这里插入图片描述

这是可以看到,输入1和10,他们之间使用逗号进行间隔,其中1的值将赋值给s1,10的值存入到s2,这是计算s1变量与s2变量的相加,那么输出结果为11。

那我们修改代码,使用input接收我们输入的两个值,再进行计算,代码为:

def jiafa(s1,s2):print('两个数相加等于:',s1+s2)a=int(input('请输入一个数字:'))
b=int(input('请输入另一个数字:'))
jiafa(a,b)

运行结果为:
在这里插入图片描述

1.3 了解有返回值的自定义函数

我现在突然感觉,我不想在函数里面输出,我只想拿到结果,输不输出我想按照当时情况而定,那这个需求怎么实现呢?很简单,我们把计算的值返回就可以了,这样我们的函数只做计算,并不进行输出;输出与否按照当时情况而定,灵活的运用。

函数的返回使用return,在自定义函数中最末位一行使用return,后接一个空格,随后一个值;这时整个函数运行完后将会有一个结果,这个结果就是使用return返回出去的值。例如我们修改1.2中的代码:

def jiafa(s1,s2):return s1+s2

与原程序相比少了输出,多了一个return,并且return后接一个空格,空格后接了两个变量相加的表达式;这个表达式并不是直接的值,不过不用担心,表达式最终会自动计算成一个值,使用return则将该值返回。若不理解也没关系,我们可以写成:

def jiafa(s1,s2):r=s1+s2return r

这时使用变量r接收了s1与s2的加法运算的值,最终返回r也是一样的。
那么我们可以在代码中调用函数后,将函数最终返回的结果赋给一个变量:

c=jiafa(a,b)

这时jiafa运行完自己函数内所有的代码后,返回一个值,这个值将给予c变量。我们再使用print输出c即可:

print('加法计算结果为:',c)

或者不使用变量接收,直接使用函数返回值输出也行:

print('加法计算结果为:',jiafa(a,b))

最终代码如下:

def jiafa(s1,s2):return s1+s2a=int(input('请输入一个数字:'))
b=int(input('请输入另一个数字:'))
print('加法计算结果为:',jiafa(a,b))

运行结果如下:
在这里插入图片描述

二、总结

  1. 了解自定义函数需要使用def进行定义,并且代码内容需要使用缩进
  2. 了解自定义函数参数的使用方法,并且多个参数使用逗号进行间隔
  3. 了解自定义函数的返回值使用return进行返回

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Activity的getReferrer():如何在Activity中获取调用者?

http://blog.csdn.net/u013553529/article/details/53856800 关于Activity的getReferrer()之一:如何在Activity中获取调用者? http://blog.csdn.net/u013553529/article/details/53882440 关于Activity的getReferrer()之二:调用者的包名是如何…

【遥感数字图像处理】实验:Erdas 软件的认识与使用

Erdas软件下载地址:《GISer福音来了:测绘地理信息类专业软件版本大全汇总下载!》 1.1 简介 ERDAS IMAGINE 是美国 ERDAS(Earth Resource Data Analysis System)公司开发的遥感图像处理系统,它以其先进的图像处理技术,友好、灵活的用户界面和操作方式,面向广阔应用领域…

import 别名_Python基础找茬系列09--import和from-import的引用区别

一、语法区别二、两种导包在内存上的区别一图看懂import与from-import的区别无论是使用import隐式导包还是form-import显示导包,整个模块都会被加载到内存中例如:from test import b,整个模块依旧进入内存,因为如果只有函数b进入内存&#xf…

设计一个限速器

限速器 (Rate Limiter) 相信大家都不会陌生,在网络系统中,限速器可以控制客户端发送流量的速度,比如 TCP, QUIC 等协议。而在 HTTP 的世界中, 限速器可以限制客户端在一段时间内发送请求的次数,如果超过设定的阈值&…

C语言新手的100个报错解法 已更新11个错误

学习目标 收藏文章报错可以过来查 [更新数据] 此文将会持续更新,收录错误信息,若本文没有收录记得联系我~ CSDN 1_bit 持续更新中… [发布日期:2020年11月16日 14:55:00] 更新: 暂无 C语言教程 C语言真的很难吗?那…

【遥感数字图像处理】实验:遥感图像显示与数据输入/输出(Erdas版)

一、实验平台:Erdas 9.1 二、实验内容:视窗功能简介、图形和图像显示操作、实用菜单操作、显示操作、AOI菜单操作、矢量和栅格菜单、数据的输入输出等。 三、实验目的:初步了解Erdas的主要功能模块,在此基础上,掌握视…

在Windows Server2016中安装SQL Server2016(转)

在Windows Server2016中安装SQL Server2016(转) 转自: http://blog.csdn.net/yenange/article/details/52980135 参考: SQL Server2016企业版 附全版本key - moonpure的专栏 - CSDN博客 http://blog.csdn.net/moonpure/article/d…

Unity3D 之UGUI 滑动条(Slider)

这里来讲解下UGUI 滑动条(Slider)的用法 控件下面有三个游戏对象 Background -->背景 Fill Area --> 前景区域 Handle Slide Area --> 滑动条 Slider的属性 其他几个设置和其他控件都差不多,这里来讲解几个特有的属性。 Direction -->方向 Whole Number…

C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言。

真不难 C语言难不难?这个问题是相对的,对于找到合适方法学习C语言的同学想必是觉得很简单;但对于一部分同学来说,没有众观全局就会误以为刚入门就需要学习庞大的知识,学着学着开始看不懂,由于心理作怪&…

【中间件】.net Core中使用HttpReports进行接口统计,分析, 可视化, 监控,追踪等...

HttpReports 基于.Net Core 开发的APM监控系统,使用MIT开源协议,主要功能包括,统计, 分析, 可视化, 监控,追踪等,适合在微服务环境中使用。官方地址:https://www.yuque.com/httpreports/docs/u…

【遥感数字图像处理】实验:遥感影像辐射纠正(大气纠正)完整操作图文教程(Erdas版)

一、实验平台:Erdas 9.1 二、实验数据:dmtm.img 三、实验内容:利用回归分析法校正影像 四、实验原理:大气散射只影响短波波段,长短波进行对比,找出影响短波的程辐射值,将其减去 五、实验目的:掌握回归分析法校正影像的方法及步骤,能熟练地对影像进行校正 六、实…

Acitivty生命周期

为什么80%的码农都做不了架构师?>>> Acitivty 有七个生命周期: onCreate:当第一次调用一个Activity就会执行onCreate方法 onStart:当Activity处于可见状态的时候就会调用onStart方法 onResume:当Activity可…

还不懂你现在学习的编程语言能做什么?还不懂如何进阶?过来看图

前言说七说八 本篇文章的配图标注、内容并不代表仅有;本篇仅以个人经验及当前大学(大专、本科)相关课程作对比,列出比较常规的语言发展走向及相关技术;再次重申,本图及本文所涉及的技术发展走向并不代表着…

【遥感数字图像处理】实验:遥感影像几何纠正完整操作流程(Erdas版)

☆☆☆ 几何纠正预备知识 ☆☆☆ 1、几何变形误差的影响因素 遥感器本身引起的畸变外部因素引起的畸变处理过程中引起的畸变2、需要做精纠正的情况 景与景之间作比较GIS建模之前监督分类时提取样本创建高精度比例尺的影像地图与矢量数据叠加源于不同比例尺的地图之间比较提取精…

openid 钉钉_钉钉开发入门,微应用识别用户身份,获取用户免登授权码code,获取用户userid,获取用户详细信息...

最近有个需求,在钉钉内,点击微应用,获取用户身份,根据获取到的用户身份去企业内部的用户中心做校验,校验通过,相关子系统直接登陆;就是在获取这个用户身份的时候,网上的资料七零八落的,找的人烦躁的很,所以自己记录一下;实现这个要求,有好几种方式,使用ISV方式相对来说比较简单…

趣味二维码生成

1背景介绍 最近在 Github 看到了一个有趣的项目 amazing-qr,它支持生成普通二维码,带图片的艺术二维码,动态二维码。项目是用 python 编写的,以命令行的方式运行生成,不太方便调用,因此,我…

《零基础看得懂的C++入门教程 》——(1)第一个C++程序就让你知其所以然

一、学习目标 了解第一个C程序了解第一个C程序结构了解什么是注释了解什么是命名空间了解C语言的输出(如何在程序运行时显示内容)了解语句结束后需要使用什么符号表示结束 了解程序入口 目录 预备第一篇,使用软件介绍在这一篇,…

1、Locust压力测试环境搭建

环境准备:阿里云服务器一台、python2.7、pip Locust 介绍Locust 是一个开源负载测试工具。使用 Python 代码定义用户行为,也可以仿真百万个用户。 Locust 简单易用,分布式,用户负载测试工具。Locust 主要为网站或者其他系统进行负…

交互式 .Net

1名词解析 1. 交互式交互式是指输入代码后可直接运行该代码,然后持续输入运行代码。2. 交互式 .Net.Net 是一种编译型语言,不像 python 这类的脚本型语言,可以边输入代码边运行结果。幸运的是,软微推出了 interactive 这个项…

mysql signed 长度_浅谈mysql字段长度设置

mysql 中最常用的数据类型是tinyint,smallint,int,bigint,char,varchar;char(n)和varchar(n)存储固定长度的字符数据,长度最大为254字节。使用 ‘n’字节的存储空间;有符号和无符号区别:有符号可以存储负值,无符号只能存储0和非负值数值;tinyint 占用1字节的存储空间…