本篇文章给大家谈谈learn python the hard way (笨办法学python),以及笨办法学python 3电子书下载,希望对各位有所帮助,不要忘了收藏本站喔。
“笨办法”学Python 3基础篇系列文章
“笨办法”学Python 3基础篇 第一部分-打印与输入
“笨办法”学Python 3基础篇 第二部分-文件操作
“笨办法”学Python 3基础篇 第三部分-函数
“笨办法”学Python 3基础篇 第四部分-数据容器与程序结构
“笨办法”学Python 3基础篇 第五部分-面向对象的类
“笨办法”学Python 3基础篇 第六部分-项目骨架与自动测试
“笨办法”学Python 3基础篇 第七部分-搭建简易的网站
第三部分 函数
前言
在介绍了输入输出和文件的读写操作后,本文进一步介绍了Python函数的基本架构,并给出了通过函数来实现打印、文件的读写和字符串的操作。
3.1 在Python 3中如何定义函数?
在Python 3中,函数的语法格式与C语言的语法不一样python绘制弧形的函数。函数的基本架构为:
函数的定义是以def关键字开头,后接自定义的函数名,函数的参数写在一对()中,以冒号:结束。函数中的参数可以是变量,也可以是表达式甚至是数字。
函数的功能块则相对于def 要有空字符,因为Python 编译时是根据空字符来判断当前代码是否属于函数的功能块。最后函数以return关键字后接函数的返回量结束定义。当然,函数的返回值是非必要项。
3.2 简单的加法器-函数、print、input综合用法
在了解了函数的基本定义后,我们通过解决这样一个简单的程序设计问题:
如何设计一个具备加法功能的简易计算器?
来掌握如何运用函数。首先,我们需要分析一下这个计算器的功能:
- 输入模块 :采用input函数和int(),实现被加数和加数的获取;
- 计算模块:采用adder函数,参数为被加数和加数,功能块负责完成加法预算,返回值为和;
- 输出模块:提示用户输入数字并打印求和结果。
分析完了这个加法计算器程序的功能模块后,就可以开始编写代码了。新建一个csdn_func.py脚本,代码具体为:
def adder(augend, addend):
sum = augend + addend
return sum
print("Please input augend: ", end='')
a = int(input("> "))
print("Please input addend: ", end='')
b = int(input("> "))
result = adder(a, b)
print(f"The sum is: {result}")
前三段代码为函数adder的定义,中间四行代码作用为获取输入的被加数和加数,这里用到了int(),将字符串变量强制转换为整数。最后两行代码为调用adder函数,打印求和结果。
通过PowerShell运行csdn_func.py脚本所得结果为:
通过这个例子可以看出,其实函数的用法也没什么难的,除了语法不一样外,其他基本和C语言差不多。
3.3 函数、文件、字符串-更复杂的挑战
接下来,我们要用函数来挑战一点更复杂的程序了。现在你需要解决这样一个问题:
从hola.txt中读取“This is your first challenging puzzle.”这一行字符串, 然后将每一个单词从字符串中分离出来,并按照第一个字母升序排列,打印出排列后的结果
要解决这一问题,需要用到上一节的文件读取的操作,同时还要引入新的函数解决字符串分割和排序的功能。
3.3.1 字符串分割 - split 用法
对于字符串的分割,我们要使用系统函数split。split()通过指定分隔符对字符串进行切片,如果第二个参数num有指定值,则分割为 num+1 个字符串,返回分割后的字符串列表。
split()语法为:
str.split(str="", num=string.count(str))
第一个str – 带分割的字符串
参数str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
num – 分割次数。默认为-1,即分隔所有。
我们来看如下代码
str = "This is your first challenging puzzle."
print(str.split()) #以空格为分隔符
print(str.split('i')) #以'i'为分隔符
print(str.split('g',1)) #以‘g’为分隔符,分割1次
在这段代码中,待分割的字符串为str,第二行代码以空格为分隔符进行分割,第三行代码则以字母i作为分隔符进行分割,第四行代码以字母g作为分隔符进行分割,且分割次数为1次。每次分割返回的都是列表类型的字符串。
通过PowerShell运行,可得结果为:
3.3.2 字符串的排序 - sort 用法
实现字符串排序功能需要使用列表排序函数sort。sort函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数,没有返回值。具体的语法为:
语法:
list.sort(key=None, reverse=False)
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是 取自于可迭代对象中的一个元素来进行排序。
reverse – 排序规则, reverse = True 降序, reverse = False 升序(默认)
在上节中,我们通过str.split()将字符串按照空格进行了分割,得到了一个字符串列表。因此,我们可以对字符串列表进行排序,具体代码如下:
str = "This is your first challenging puzzle."
str_list = str.split()
print(str_list)
str_list.sort()
print(str_list)
结果为:
从运行结果可知,在字符串首字母升序排列时,大写字母的顺序低于小写字母的顺序。
3.3.3 可以解决问题了
现在我们可以根据如下的步骤来解决本节开头提出的问题:
从hola.txt中读取“This is your first challenging puzzle.”这一行字符串, 然后将每一个单词从字符串中分离出来,并按照第一个字母升序排列,打印出排列后的结果
- 利用argv获取hola.txt的文件名
- 编写read_words 函数,功能包括:打开文档,读取字符串,关闭文档,返回字符串words
- 编写break_words函数,实现按照空格进行字符串分割
- 编写sort_words函数,实现字符串升序排列,并打印出结果
通过以上分析,解决该问题的代码:
from sys import argv
def read_words(file_tar):
txt = open(file_tar)
words = txt.readline()
txt.close()
return words
def break_words(sentence):
words_list = sentence.split()
return words_list
def sort_words(lists):
lists.sort()
print(lists)
, filename = argv
words = read_words(filename)
words_list = break_words(words)
sort_words(words_list)
我们通过调用read_words, break_words和sort_words函数实现了从文件中提取字符串并对字符串进行分割和排序的操作。在PowerShell中运行操作后,可得结果
结语
函数非常重要。在后续的类定义中,类的功能都是由函数构成。因此,熟练掌握函数的定义和应用将是成功使用类的前提。