“笨办法”学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语言的语法不一样。函数的基本架构为:
函数的定义函数的定义是以def关键字开头,后接自定义的函数名,函数的参数写在一对()中,以冒号:结束。函数中的参数可以是变量,也可以是表达式甚至是数字。
函数的功能块则相对于def 要有空字符,因为Python 编译时是根据空字符来判断当前代码是否属于函数的功能块。最后函数以return关键字后接函数的返回量结束定义。当然,函数的返回值是非必要项。

3.2 简单的加法器-函数、print、input综合用法

在了解了函数的基本定义后,我们通过解决这样一个简单的程序设计问题:
如何设计一个具备加法功能的简易计算器?
来掌握如何运用函数。首先,我们需要分析一下这个计算器的功能:

  1. 输入模块 :采用input函数和int(),实现被加数和加数的获取;
  2. 计算模块:采用adder函数,参数为被加数和加数,功能块负责完成加法预算,返回值为和;
  3. 输出模块:提示用户输入数字并打印求和结果。

分析完了这个加法计算器程序的功能模块后,就可以开始编写代码了。新建一个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运行,可得结果为:
split用法

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)

结果为:
sort
从运行结果可知,在字符串首字母升序排列时,大写字母的顺序低于小写字母的顺序。

3.3.3 可以解决问题了

现在我们可以根据如下的步骤来解决本节开头提出的问题:
从hola.txt中读取“This is your first challenging puzzle.”这一行字符串, 然后将每一个单词从字符串中分离出来,并按照第一个字母升序排列,打印出排列后的结果

  1. 利用argv获取hola.txt的文件名
  2. 编写read_words 函数,功能包括:打开文档,读取字符串,关闭文档,返回字符串words
  3. 编写break_words函数,实现按照空格进行字符串分割
  4. 编写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)

script, filename = argv

words = read_words(filename)
words_list = break_words(words)
sort_words(words_list)

我们通过调用read_words, break_words和sort_words函数实现了从文件中提取字符串并对字符串进行分割和排序的操作。在PowerShell中运行操作后,可得结果
解决问题

结语

函数非常重要。在后续的类定义中,类的功能都是由函数构成。因此,熟练掌握函数的定义和应用将是成功使用类的前提。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
笨办法Python3》是一本教授Python编程基础的书籍,它分为七个部分,分别是打印与输入、文件操作、函数、数据容器与程序结构、面向对象的类、项目骨架与自动测试以及搭建简易的网站。这本书通过一系列的练习和示例,帮助读者逐步Python的基本语法和编程概念。 在第一部分《打印与输入》中,你将习如何使用print函数打印输出内容,以及如何使用input函数获取用户的输入。 在第二部分《文件操作》中,你将习如何打开、读取和写入文件,以及如何处理文件中的数据。 在第三部分《函数》中,你将习如何定义和调用函数,以及如何传递参数和返回值。 在第四部分《数据容器与程序结构》中,你将习如何使用列表、字典和元组等数据容器,以及如何使用条件语句和循环结构控制程序的执行流程。 在第五部分《面向对象的类》中,你将习面向对象编程的基本概念,包括类的定义、对象的创建和方法的调用。 在第六部分《项目骨架与自动测试》中,你将习如何使用项目骨架来组织你的代码,并习如何编写自动化测试来验证代码的正确性。 在第七部分《搭建简易的网站》中,你将习如何使用Python搭建一个简单的网站,并习一些与网站开发相关的知识。 通过《笨办法Python3》,你可以系统地Python编程的基础知识,并通过练习提升自己的编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值