《笨办法学 python3》系列练习计划——25.更多更多的练习

题目

本题虽然叫做练习,不过通过以下函数和变量的练习,还是有不少新的东西要见面的。
而我们要做的和之前差不多还是写程序,逐行研究,弄懂它。
不过也有不同,我们本次不会直接运行所写的程序,而是要将它导入到 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'

加分练习

(本题的加分练习感觉更像是一个说明文档啊)

  1. 研究答案中没有分析过的行,找出它们的来龙去脉。确认自己明白自己使用的是模组 ex25 中定义的函数
  2. 试着执行 help(ex25)help(ex25.break_words)。这是你得到模组帮助文档的方式。所谓帮助文档就是在定义函数放在 """ 之间的东西。
  3. 重复键入 ex25. 是件烦人的事情。有个捷径就是用 from ex25 import * 的方式导入模组。这相当于说:“我要把 ex25 中的所有东西 import 进来。”程序员喜欢说这样的倒装句,开一个新的会话,看看你所有的函数是不是已经在那里了。
  4. 把你的脚本里面的内容逐行通过 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_wordex25.print_last_word 将第一个和最后一个词打印出来。
  • 9 行 由于我们写错了单词导致了一个错误。
  • 10 行 再次输出 words 的内容,可以发现之前的首尾的单词都不见了(详见下文)
  • 11-12 行 把排序句子的首尾单词打印出来
  • 13 行 和第 10 行类似,打印出来首位单词后它们也消失了
  • 14-15 行 我们用了另一个方法 ex25.sort_sentence ,使用一个函数重新获取了排序句子。
  • 16-17行 一样是一个函数,我们就分别得到了两种排序的首位单词。




返回目录

《笨办法学 python3》系列练习计划——目录

猜你喜欢

转载自blog.csdn.net/aaazz47/article/details/79666312