从零开始入门python第一讲(1)
这一章我们系统地来学习【函数】这个概念
首先来看定义
可以重用,并且可以实现特定的功能
定义函数要按照固定的格式,形如:
def是定义的标准表述
参数和return都是可有可无的,关于参数和return怎么理解,我们参照下面的表述
重要的比较难理解的就是最后一句话,要着重理解形参和实参在程序中的作用,另外函数输出的结果如果是特定的值或者数据的话需要用return语句来指定把哪个变量作为函数的输出,举个栗子
在这个阶乘的函数中,n就是形参,10就是实参,fact(10)就是函数调用的语句,return表示这个函数的输出就是s的值,关于实参和形参如何传递,计算结果如何传递,看下面这张图
接着通过两个示例学习一下【可选参数】和【可变参数】
在可选参数中,可选的参数在调用时可加可不加,不加的时候会有一个默认的值。
可变参数的数量不确定,可0个可多个
接着,我们来通过一个示例理解一下什么是函数的返回值
在上面例子里,函数的返回值是三个数值,并且这三个数值可以赋值给三个变量。
接着我们来理解什么是【全局变量】和【局部变量】
从字面意思理解,全局变量就是在整个程序中都发挥作用的变量,而局部变量就是在部分程序代码中发挥作用的变量,我们举个栗子:
在上面这个例子中,n和s不在函数fact()中和在fact()中时是完全不同的定义,在函数中时局部变量,在函数外是全局变量
而如果我们想把函数体中的变量也变成全局变量的话,那就要加上特别的声明:global
例如:
此外,组合数据类型默认是全局变量,如果在函数体内新建的话就变成局部变量了,还有lamda函数的使用,是函数定义的另一种写法,不是很重要,这里只提一下,不做过多介绍
接下来我们来接触今天的程序设计实例:【七段数码管的绘制】
先来看题:用turtle库在画布上画出当前时间,类似于下面这样的形式:
那么这个问题应该分为几个步骤来实现呢?
首先,我们要在步骤1里实现单个数字的绘制
其次,我们要在步骤2里实现一串数字的绘制
最后,我们再根据时间来输出最后的结果
按照这个思路的话,应该是第三个功能调用第二个功能,第二个功能要调用第一个功能
首先来实现第一个功能,实现单个数字的绘制
思路如上所示,我们将绘制单个数字转换成为【七段数码管】的显示问题
import turtle
def drawLine(draw): #绘制单段数码管
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
turtle.right(90)
def drawDigit(digit): #根据数字绘制七段数码管
drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,6,8] else drawLine(False)
turtle.left(90)
drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
可以看出,在这个程序中有两个函数,第一个函数通过参数(draw)来判断是否需要在指定位置划线(取决于画笔是抬起还是放下)
第二个函数是根据不同的数字在七段数码管中对应的位置是否需要划线写了7个单层的分支语句
举一个简单的例子:数字8在七段数码管中都是存在的
然后再把画一串数字这个功能集成封装在另一个更高等级的函数中,我们给它起名叫drawDate()
def drawDate(date): #获得要输出的数字
for i in date:
drawDigit(eval(i))
再写主函数,来调用drawDate
def main():
turtle.setup(800, 350, 200, 200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawDate('20181010')
turtle.hideturtle()
turtle.done()
然后调用主函数,main()程序运行结果如下所示:
这显然不是我们想要的效果,目前还有三个问题需要改进,一是数字的七段数码管之间应该是有一段空隙的,另外没有添加年月日的显示,显示的时间也并不是当前的系统时间。
为了解决以上三个问题,我们对程序做如下改进
首先来实现空隙的绘制
def drawGap(): #绘制数码管间隔
turtle.penup()
turtle.fd(5)
然后在画每一个线段之前和之后都加上空隙
把drawLine改成
def drawLine(draw): #绘制单段数码管
drawGap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)
接着,从系统获取当前的时间,并以我们自定义的形式来生成时间的字符串,改一下main函数
def main():
turtle.setup(800, 350, 200, 200)
turtle.penup()
turtle.fd(-350)
turtle.pensize(5)
drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
turtle.hideturtle()
turtle.done()
可以看出,年后面会加一个“-”,月后面会加一个“=”,日期后面会加一个“+”,我们就可以进行判断了,更改drawDate函数为
def drawDate(date):
turtle.pencolor("red")
for i in date:
if i == '-':
turtle.write('年',font=("Arial", 18, "normal"))
turtle.pencolor("green")
turtle.fd(40)
elif i == '=':
turtle.write('月',font=("Arial", 18, "normal"))
turtle.pencolor("blue")
turtle.fd(40)
elif i == '+':
turtle.write('日',font=("Arial", 18, "normal"))
else:
drawDigit(eval(i))
其中,这个turtle.write是一个新的方法,可以用turtle来写出对应的文本字符串,并且可以用font参数来规定显示出来的字体的字号和颜色
程序运行结果如下:
好的,这是第一部分,先学到这儿
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。
最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!对于还不清楚行业技巧或者是面试技巧薄弱的人来说,是有相当大的帮助的
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后,我也给大家分享一份Python学习资料和公开课,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂。如果需要的话可以扫描底下二维码领取,让我们一起学习!
如果这篇文章对你有所帮助,还请花费2秒的时间 点个赞+在看+分享,让更多的人看到这篇文章,帮助他们走出误区。
阿J~: 不错不错!反手就是一个赞,欢迎回评哦~
无聊的一: 这个excel怎么获取
北殉: 现在大麦pc端不给抢了吧,而且运行不起来哎 有没有最新的代码分享一下呗 大佬
w030424: 大佬搞个新的给兄弟们用用
50W程序员都在看: 又是从哪复制粘贴过来的,代码都是老代码不能用,不是最新的