前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《假如编程是魔法之零基础看得懂的Python入门教程 》——(七)我把魔法变成了积木

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

作者头像
1_bit
发布2021-01-14 17:13:40
4140
发布2021-01-14 17:13:40
举报
文章被收录于专栏:我的知识小屋

学习目标

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

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

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

1.1 了解自定义函数的编写

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

代码语言:javascript
复制
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.五花八门大丸子')

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

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

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

代码语言:javascript
复制
if c:

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

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

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

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

代码语言:javascript
复制
def caidan():

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

代码语言:javascript
复制
def caidan():
	#这里写caidan这个功能的代码
	#这里写caidan这个功能的代码

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

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

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

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

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

代码语言:javascript
复制
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()就等于函数内的代码:

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

在程序运行时应该显示函数中的代码运行结果:

在这里插入图片描述
在这里插入图片描述

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
def jiafa():

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

代码语言:javascript
复制
def jiafa(s1,s2):

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

代码语言:javascript
复制
print(s1+s2)

完整jiafa函数代码为:

代码语言:javascript
复制
def jiafa(s1,s2):
	print(s1+s2)

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

代码语言:javascript
复制
jiafa(1,10)

完整代码如下:

代码语言:javascript
复制
def jiafa(s1,s2):
	print(s1+s2)

jiafa(1,10)

运行结果为:

在这里插入图片描述
在这里插入图片描述

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

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

代码语言:javascript
复制
def jiafa(s1,s2):
	print('两个数相加等于:',s1+s2)

a=int(input('请输入一个数字:'))
b=int(input('请输入另一个数字:'))
jiafa(a,b)

运行结果为:

在这里插入图片描述
在这里插入图片描述

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

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

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

代码语言:javascript
复制
def jiafa(s1,s2):
    return s1+s2

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

代码语言:javascript
复制
def jiafa(s1,s2):
	r=s1+s2
    return r

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

代码语言:javascript
复制
c=jiafa(a,b)

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

代码语言:javascript
复制
print('加法计算结果为:',c)

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

代码语言:javascript
复制
print('加法计算结果为:',jiafa(a,b))

最终代码如下:

代码语言:javascript
复制
def jiafa(s1,s2):
    return s1+s2

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

运行结果如下:

在这里插入图片描述
在这里插入图片描述

二、总结

  1. 了解自定义函数需要使用def进行定义,并且代码内容需要使用缩进
  2. 了解自定义函数参数的使用方法,并且多个参数使用逗号进行间隔
  3. 了解自定义函数的返回值使用return进行返回
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 学习目标
  • 一、了解魔法世界中的积木
  • 1.1 了解自定义函数的编写
  • 1.2 了解有参数的自定义函数
  • 1.3 了解有返回值的自定义函数
  • 二、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档