《笨办法学Python》 第25课手记
《笨办法学Python》 第25课手记
本节课内容较多,如果不理解可以先尝试做正确,然后再来理解。我们的学习已经由最初的简单向复杂转变了,希望你能咬牙坚持下来,只要能没有遗漏的学到最后,相信我们都能掌握好Python。同时通过这么长时间的学习,我理解了很多人喜欢Python的原因。因为相较与C家族,Python真的有一种简洁的美感,而且易懂。
原代码如下:
def break_words(stuff):
"""This function break up words for us."""
words = stuff.split(' ')
return words
def sort_words(words):
"""sorts the words."""
return sorted(words)
def print_first_word(words):
"""prints the first word after popping it off."""
word = words.pop(0)
print word
def print_last_word(words):
"""Prints the last word after popping it off."""
word = words.pop(-1)
print word
def sort_sentence(sentence):
"""Takes in a full sentence and returns the sorted words."""
words = break_words(sentence)
return sort_words(words)
def print_first_and_last(sentence):
"""Prints the first and last words of the sentence."""
words = break_words(sentence)
print_first_word(words)
print_last_word(words)
def print_first_and_last_sorted(sentence):
"""Sorted the words then prints the first and last one."""
words = sort_sentence(sentence)
print_first_word(words)
print_last_word(words)
这段代码定义了7个函数,里面用”“”括起来的英文解释了每个函数的功能。
而且在命令行界面输入help(函数名)可以调出”“”里面的内容,因此可以看做是帮助文档。由此可以窥见预定义函数可能也是以该种形式定义的。
这段代码涉及的新的用法:
def sort_sentence(sentence):
"""Takes in a full sentence and returns the sorted words."""
words = break_words(sentence)
return sort_words(words)
在一个函数的定义中调用了另一个函数,注意调用的函数必须是先前定义的,即遵循先定义再调用的顺序。这里不同于C语言可以先写一个函数声明,然后可以将函数定义写到后面的做法。
这里的7个函数实际上组成了一个模组,这和我们过去使用sys模组类似,但sys是预先就定义好的,ex25这个模组,是我们自己手动定义的。是不是感觉很棒呢!你现在已经可以自己定义模组了呢!
结果如下:
(>>>是你手动输入的内容,其他的是解释器输出的内容)
在这里面有两处与书中给出的结果不一样的地方:
1.
这是因为我将words打成了wrods而引起的错误,如果你是对的,则不会出现图片中的内容。
2.
这里的^D是在键盘上按下Ctrl+D的意思,但这里出错是因为Windows Power Shell环境下退出是Ctrl+Z,所以^Z才是正确用法。当出现PS C:Users你电脑的用户名时,说明当前处于无任何操作状态,在这里表示成功退出。
以该种方式运行之后,ex25.py所在文件夹会自动生成一个叫ex25.pyc的文件
本节课涉及的知识:
1.stuff.split(’ ‘),以空格为标志分割字符串,默认全部分割,可以在括号里”后面指定参数以使解释器按规定次数分割。
比如stuff.split(”,1)只分割一次,分割结果是’All’和’good things come to those who wait.’
2.sorted(words),以字母表顺序为依据将words变量所包含的字符串中的英文单词进行排序,英文句号在该过程中将被舍弃。
3.word = words.pop(0),弹出一个元素后关闭,括号内的参数表示弹出元素的位置。0代表第一个,-1代表最后一个。暂不清楚单位是不是之前类似的字节,之前碰到位置参数时,数字代表的是第几个字节数。请记住这种用法,也记住这个疑问。稍后再碰到一些具体的例子就能理解了。
4.用法:先排序,在输出第一个或者最后一个,是求最值的常用方法,SQL语言中可以先将SC表中的Grade降序排序,然后输出第一个求最高分。也请记住这种用法。
- C语言嵌入式系统编程修炼之屏幕操作
- max-width:100%在td或者table-cell里渲染不符合预期小笔记
- ASP.NET Core中的依赖注入(2):依赖注入(DI)
- 使用Ansible自动化您的(云或者本地)机器
- 像Apache Storm一样简单的分布式图计算
- css绘图,实现一些特殊形状
- 看机器学习如何还原图像色彩
- CSS Hack整理
- 如何在调用WCF服务之前弹出一个确认对话框?
- 表格列的hover状态与选中状态
- 神级程序员教你如何写代码——十年编程内功心法
- ASP.NET Core中的依赖注入(1):控制反转(IoC)
- Web-Fontmin -- 在线提取你需要的字体
- 让Kaggle比赛第二名获奖者告诉你:买下一个冰淇淋的最佳时间是什么时候?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 代码审计-.NET下的序列化与反序列化(BinaryFormatter)
- 深入探讨 JavaScript 逻辑赋值运算符
- Spring IoC依赖注入:Spring提供了哪些依赖注入模式和类型呢?
- 谈谈volatile
- 【V-REP自学笔记(八)】控制youBot抓取和移动物体
- Gson 简单使用姿势小结
- 【SpringBoot WebFlux 系列】WebFlux 之 Path 参数解析与 url 映射
- 「推荐」阿里开源的分布式事务框架 Seata
- BeanDefinition元信息:除了Bean名称和类名,还有哪些Bean元信息值得关注?
- 【SpringBoot WebFlux 系列】 header 参数解析
- MySQL为什么还有kill不掉的语句?
- 【SpringBoot DB 系列】h2databse 集成示例 demo
- 在grant语句之后要跟着flush privileges吗?
- Python实现数据写入 Excel 的三种模块!
- redis的两种持久化的机制,你真的了解么?