习题 25: 更多更多的练习

我们将做一些关于函数和变量的练习,以确认你真正掌握了这些知识。这节练习对你来说可以说是一本道:写程序,逐行研究,弄懂它。

不过这节练习还是有些不同,你不需要运行它,取而代之,你需要将它导入到 python 里通过自己执行函数的方式运行。

 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):
"""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):
"""Sorts the words then prints the first and last one."""
words = sort_sentence(sentence)
print_first_word(words)
print_last_word(words)

首先以正常的方式 python ex25.py 运行,找出里边的错误,并把它们都改正过来。然后你需要接着下面的答案章节完成这节练习。

你应该看到的结果

这节练习我们将在你之前用来做算术的 python 编译器里,用交互的方式和你的.py 作交流。

这是我做出来的样子:

我们来逐行分析一下每一步实现的是什么:

  • 在第 5 行你将自己的 ex25.py 执行了 import,和你做过的其它 import 一样。在 import 的时候你不需要加 .py 后缀。这个过程里,你把 ex25.py 当做了一个“模组(module)”来使用,你在这个模组里定义的函数也可以直接调用出来。
  • 第 6 行你创建了一个用来处理的“句子(sentence)”。
  • 第 7 行你使用 ex25 调用你的第一个函数 ex25.break_words。其中的 . (dot, period)符号可以告诉 Python:“嗨,我要运行 ex25 里的哪个个叫 break_words 的函数!”
  • 第 8 行我们只是输入 words,而 python 将在第 9 行打印出这个变量里边有什么。看上去可能会觉得奇怪,不过这其实是一个“列表(list)”,你会在后面的章节中学到它。
  • 10-11 行我们使用 ex25.sort_words 来得到一个排序过的句子。
  • 13-16 行我们使用 ex25.print_first_word 和 ex25.print_last_word 将第一个和最后一个词打印出来。
  • 第 17 行比较有趣。我把 words 变量写错成了 wrods,所以 python 在 18-20 行给了一个错误信息。
  • 21-22 行我们打印出了修改过的词汇列表。第一个和最后一个单词我们已经打印过了,所以在这里没有再次打印出来。

剩下的行你需要自己分析一下,就留作你的加分习题了。

加分习题

  1. 研究答案中没有分析过的行,找出它们的来龙去脉。确认自己明白了自己使用的是模组 ex25 中定义的函数。
  2. 试着执行 help(ex25) 和 help(ex25.break_words) 。这是你得到模组帮助文档的方式。 所谓帮助文档就是你定义函数时放在 """之间的东西,它们也被称作 documentation comments (文档注解),后面你还会看到更多类似的东西。
  3. 重复键入 ex25. 是很烦的一件事情。有一个捷径就是用 from ex25 import * 的方式导入模组。这相当于说:“我要把 ex25 中所有的东西 import 进来。”程序员喜欢说这样的倒装句,开一个新的会话,看看你所有的函数是不是已经在那里了。
  4. 把你脚本里的内容逐行通过 python 编译器执行,看看会是什么样子。你可以执行CTRL-D (Windows 下是 CTRL-Z)来关闭编译器。

习题练习

1.

  Python中sorted函数的用法

  python sorted

2.

  python 字符串的split()函数详解

  举例详解Python中的split()函数的使用方法

3.

  Python List pop()方法

  慎用python的pop和remove方法

4.

 def  break_words(stuff):
"""This function will break up words for us."""
words = stuff.split(' ') # split(' ') 函数以空格为标志分割字符串,默认全部分割
return words def sort_words(words):
"""Sorts the words."""
return sorted(words) # sorted(words),以字母表顺序为依据将words变量所包含的字符串中的英文单词进行排序,英文句号在该过程中将被舍弃。 def print_first_word(words):
"""Prints the first word afterpopping it off."""
word = words.pop(0) # pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
print word # 打印变量 word 的内容 def print_last_word(words):
"""Prints the last word after poping it off."""
word = words.pop(-1) # pop(-1) 删除最后一个元素,并把该元素赋予变量 word
print word # 打印变量 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):
"""Sorts the words then prints the first and last one."""
words = sort_sentence(sentence)
print_first_word(words)
print_last_word(words)

本节课涉及的知识:

  (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降序排序,然后输出第一个求最高分。也请记住这种用法。

最新文章

  1. MVC PartialView
  2. 教你一招:解决windows xp系统开机出现“disk checking has been canceled”
  3. hdu 5071(2014鞍山现场赛B题,大模拟)
  4. C语言实现栈
  5. [源码]String StringBuffer StringBudlider(2)StringBuffer StringBuilder源码分析
  6. react拷贝index.html很恶心之解决办法
  7. SharePoint 2013:自定义ECB菜单项的添加
  8. 自己用的一个ASP.Net MVC分页拿出来分享下(转)
  9. Linux 安装 nginx注意
  10. Docker Centos安装Openssh
  11. css 强制不换行
  12. linux使用crontab实现PHP执行定时任务及codeiginter参数传递相关
  13. BZOJ 2120: 数颜色 分块
  14. 奇怪的Lisp和难懂的计算机程序的构造和解释
  15. javaWeb超链接(href)请求-特殊字符处理
  16. ABP框架 - 我的第一个Web API
  17. vuex的使用步骤
  18. 计算机网络实验八实验报告——应用Packet Tracer 5.0模拟器工具对WLAN进行配置
  19. 关于ping地址的几个意义
  20. mybatis 思考

热门文章

  1. Ubuntu系统中连接TFS的Git地址注意事项
  2. WebService、WCF、WebAPI、MVC的区别
  3. python练习六十一:文件处理,读取文件内容
  4. Modbus协议学习笔记
  5. connect to 10.104.11.128 port 9999 (tcp) failed: No route to host
  6. 信息领域热词分析系统--python切词
  7. ORACLE这门武功
  8. Nuxt 2.3.X 配置sass
  9. idea+springboot+Mybatis搭建web项目
  10. vector 中需要注意的东西!