“笨办法”学Python 3基础篇系列文章

“笨办法”学Python 3基础篇 第一部分-打印与输入
“笨办法”学Python 3基础篇 第二部分-文件操作
“笨办法”学Python 3基础篇 第三部分-函数
“笨办法”学Python 3基础篇 第四部分-数据容器与程序结构
“笨办法”学Python 3基础篇 第五部分-面向对象的类
“笨办法”学Python 3基础篇 第六部分-项目骨架与自动测试
“笨办法”学Python 3基础篇 第七部分-搭建简易的网站


第三部分 函数

  • “笨办法”学Python 3基础篇系列文章
  • 前言
  • 3.1 在Python 3中如何定义函数?
  • 3.2 简单的加法器-函数、print、input综合用法
  • 3.3 函数、文件、字符串-更复杂的挑战
    • 3.3.1 字符串分割 - split 用法
    • 3.3.2 字符串的排序 - sort 用法
    • 3.3.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 + addendreturn sumprint("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.”这一行字符串, 然后将每一个单词从字符串中分离出来,并按照第一个字母升序排列,打印出排列后的结果

  1. 利用argv获取hola.txt的文件名
  2. 编写read_words 函数,功能包括:打开文档,读取字符串,关闭文档,返回字符串words
  3. 编写break_words函数,实现按照空格进行字符串分割
  4. 编写sort_words函数,实现字符串升序排列,并打印出结果

通过以上分析,解决该问题的代码:

from sys import argvdef read_words(file_tar):txt = open(file_tar)words = txt.readline()txt.close()return wordsdef break_words(sentence):words_list = sentence.split()return words_listdef sort_words(lists):lists.sort()print(lists)script, filename = argvwords = read_words(filename)
words_list = break_words(words)
sort_words(words_list)

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

结语

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

“笨办法”学Python 3基础篇 - 函数相关推荐

  1. “笨办法”学Python 3基础篇-文件操作

    "笨办法"学Python 3基础篇系列文章 "笨办法"学Python 3基础篇 第一部分-打印与输入 "笨办法"学Python 3基础篇 第 ...

  2. 【读书笔记】Python编程-基础知识和案例讲解,“笨办法”学Python 3_2020.02.15

    [概述] --书名:"笨办法"学Python 3 --作者:泽德 A.肖 --日期:2020年02月15日 --大事件记录: 截至2月14日24时,据31个省(自治区.直辖市)和新 ...

  3. 这本 Python 入门畅销书《“笨办法”学 Python 3》,不仅仅是一本书!

    在我们学习任何一门语言的时候,我们都恨不得有一本书或者有一节视频就能让我们学会所有内容,或者购买的书籍里能包含练习题,带着练习学习的话会更好的理解内容,Python编程语言的话题热度目前来看一直居高不 ...

  4. 从零开始学 Python 之基础篇

    从零开始学 Python 之基础篇 前言 大家好,这里是「痴海」从零开始学习 Python 系列教程.此文首发于「痴海」公众号,欢迎大家去关注.学习一门语言最好的办法,就是教懂别人.在这公众号,我会从 ...

  5. 【人生苦短,我学 Python】基础篇——标准数据类型(Day3)

    大家好!我是[AI 菌],一枚爱弹吉他的程序员.我热爱AI.热爱编程.热爱分享! 这博客是我对学习的一点总结与思考.如果您也对 深度学习.机器视觉.算法.Python.C++ 感兴趣,可以关注我的动态 ...

  6. 《“笨办法”学Python(第3版)》——习题3 数字和数学计算

    本节书摘来自异步社区<"笨办法"学Python(第3版)>一书中的习题3,作者[美]Zed A. Shaw,王巍巍 译,更多章节内容可以访问云栖社区"异步社区 ...

  7. python 动态执行条件判断_【人生苦短,我学 Python】基础篇——条件判断与循环语句(Day12)_不积跬步,无以至千里!-CSDN博客...

    原文作者:AI 菌 原文标题:[人生苦短,我学 Python]基础篇--条件判断与循环语句(Day12) 发布时间:2021-02-08 23:17:06 写在前面:大家好!我是[AI 菌],一枚爱弹 ...

  8. 【“笨办法”学Python】20.函数和文件

    20.函数和文件 文章目录 前言 一.Atom文本编辑器 二.运行Python程序 总结 前言   函数和文件在一起是如何一起协助发挥作用. 一.Atom文本编辑器 from sys import a ...

  9. “笨办法”学Python笔记 Lesson35—45

    一.作业内容 笨办法学 Python 习题35-45以及加分题. 二.作业代码: #习题35 分支和函数 from sys import exit def gold_room():print(&quo ...

最新文章

  1. 深究的东西 - HTML5地理应用
  2. 【转】自然语言系列学习之表示学习与知识获取(四)TransE
  3. Android获取存储卡路径的方式(转)
  4. 【大话Hibernate】Hibernate的核心接口和类
  5. Navicat远程连接linux下mysql服务器1045错误解决办法在这儿
  6. 高可用集群 heartbeatv1实例
  7. 从键盘上录入10科考试分数,输出最高分最高分输入的序号
  8. java.sql.SQLException: Before start of result set
  9. 小熊派折叠开发板Docker编译烧录安装HAP
  10. 动态模型之增压暂停【FunTester测试框架】
  11. 0基础学python做什么工作好-零基础自学Python多久可以找工作?
  12. 对抗机器学习—— 迭代FGSM
  13. 有关Intel主板驱动静默安装的一个坑
  14. elementUI 日期时间选择器el-date-picker开始时间与结束时间约束
  15. “醉牛前端”重新起航!
  16. 超轻薄笔记本电脑软件测试,2009年度-13英寸超轻薄笔记本年度横向评测
  17. 高级操作!用 Python 在 Excel 里画出蒙娜丽莎
  18. c程序的基本组成单位是什么?
  19. MCU多功能遥测终端机RTU的特点和应用知多少?
  20. 初入坑GWAS,学习plink还是TASSEL?

热门文章

  1. 毛球科技产业:“区块链+物联网”产业预测
  2. asp sql查询过滤空格_【技术干货】30个最适合初学者的SQL查询
  3. 使用 Thumbnails 压缩图片
  4. css基础 层叠样式表 选择器
  5. 最新上架电子书10本
  6. #力扣LeetCode883. 三维形体投影面积 @FDDLC
  7. python练习题(六)正则表达式
  8. Java中缀表达式转后缀表达式.
  9. Webug4.0靶场过关--注入
  10. JavaScript函数的命名方式