题目
本题虽然叫做练习,不过通过以下函数和变量的练习,还是有不少新的东西要见面的。
而我们要做的和之前差不多还是写程序,逐行研究,弄懂它。
不过也有不同,我们本次不会直接运行所写的程序,而是要将它导入到 python 里通过执行函数的方式运行。
新知识
本题会遇到几个新的的函数、方法,我估计有可能后续题目会讲解,先说一下基本功能吧。
本题的 3 个新函数除一个 sorted
是python 的内置函数,用起来和 print
类似,直接在括号中加合法的参数就能使用外。另外两个都要只对特定的对象起作用,它们使用的时候类似 open
打开的文件,是用“点分”格式调用的:
split
:它是字符串的一个方法,作用是把字符串拆成一个一个的单词,放在中括号中(叫做列表 【list】,后续介绍 )并以逗号分隔。至于以什么标准来拆则在参数中定义。
例如以逗号分割字符串:
s = '111,sss,bbb'
s.split(',')
# 结果是
['111', 'sss', 'bbb']
sorted
:把参数中的内容安装升序排列,并且生成一个新的列表( list )
sorted(s)
# 结果:
[',', ',', '1', '1', '1', 'b', 'b', 'b', 's', 's', 's']
sorted(s.split(','))
# 结果:
['111', 'bbb', 'sss']
pop(整数)
它是列表 ( list )的一个方法,会从列表中指定位置(默认是末尾)拿出一个元素并返回。不过我们可以在参数中指定从什么位数拿东西出来。我们也可以先思考一下练习中的 pop(-1)
和 pop(0)
代表的究竟是什么位置?(提示,计算机不是从 1 数数的)
s.pop(-1)
# 结果:
'sss'
加分练习
(本题的加分练习感觉更像是一个说明文档啊)
- 研究答案中没有分析过的行,找出它们的来龙去脉。确认自己明白自己使用的是模组
ex25
中定义的函数 - 试着执行
help(ex25)
和help(ex25.break_words)
。这是你得到模组帮助文档的方式。所谓帮助文档就是在定义函数放在"""
之间的东西。 - 重复键入
ex25.
是件烦人的事情。有个捷径就是用from ex25 import *
的方式导入模组。这相当于说:“我要把 ex25 中的所有东西 import 进来。”程序员喜欢说这样的倒装句,开一个新的会话,看看你所有的函数是不是已经在那里了。 - 把你的脚本里面的内容逐行通过 python 编译器执行,看看会是什么样子。你可以执行 CTRL-D(windows 下是 CTRL-Z)来关闭编译器。
我的答案
25.0 基础练习 + 25.1分析
首先是脚本部分
def break_words(stuff):
"""
This function will 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):
"""
Print 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_adn_last(sentence):
"""
Prints the fist and last words of the sentence.
打印句子的第一个和最后一个单词。
"""
words = break_words(sentence)
print_first_word(words)
print_last_word(words)
def print_first_and_list_sorted(sentence):
"""
Sorts the words then prints the first and last one.
句子排序后打印第一个和最后一个单词
"""
words = sort_sentence(sentence)
print_first_word(words)
print_last_word(words)
接下来是在 python 命令行中 import 脚本并运行,我这里使用了 ipython 这个增强型的 python 命令行,运行过程和分析如下
- 下面说的行以 ipython 的行号为准,输入输出使用一个行号。
- 第 1 行
import ex25
这里把我们刚刚写的脚本进行了引入,这和我们之前练习中引入库(模组、模块)的时候一样,你也一定注意到了,我们引入的时候并不需要写后缀名.py
- 第 2 行 我们把一句话装入了变量
sentence
- 第 3 行 调用了函数
ex25.break_words
。其中.
符号告诉 python :“嗨,我要运行ex25
里的那个叫做break_words
的函数。 - 第 4 行 我们输出了
words
变量的内容(这个方法只在命令行模式有用)。而在它的输出中我们看到的中括号[]
的部分叫做列表(list),我们在后面的练习会正式认识到它。 - 第 5-6 行 使用了
ex25.sort_words
得到了一个单词被排序后的句子。 - 7-8 行 使用了
ex25.print_first_word
和ex25.print_last_word
将第一个和最后一个词打印出来。 - 9 行 由于我们写错了单词导致了一个错误。
- 10 行 再次输出
words
的内容,可以发现之前的首尾的单词都不见了(详见下文) - 11-12 行 把排序句子的首尾单词打印出来
- 13 行 和第 10 行类似,打印出来首位单词后它们也消失了
- 14-15 行 我们用了另一个方法
ex25.sort_sentence
,使用一个函数重新获取了排序句子。 - 16-17行 一样是一个函数,我们就分别得到了两种排序的首位单词。