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

本文是《笨办法学 Python3》的练习解析,介绍了如何使用函数执行脚本,重点讲解了字符串的split()方法、列表的sort()和pop()方法。此外,还提到了import模块的快捷方式以及查看模块帮助文档的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

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

### 习《Learn Python the Hard Way》Exercise 18 的相关内容 在《Learn Python the Hard Way》这本书中,Exercise 18 主要涉及函数和变量的概念以及如何通过传递参数来调用这些函数。以下是关于此主题的一些重要知识点: #### 函数定义与调用 Python 中的函数可以通过 `def` 关键字进行定义。函数可以接受多个参数,并且可以在函数体内执行一系列操作后返回结果。例如,在 Exercise 18 中可能涉及到的一个简单函数如下所示[^1]: ```python def print_two(*args): arg1, arg2 = args print(f"arg1: {arg1}, arg2: {arg2}") ``` 上述代码展示了如何创建一个接收两个参数并打印它们值的函数。 #### 参数解包 当使用像 `*args` 这样的特殊语法时,实际上是告诉 Python 将所有的参数收集到一个名为 `args` 的列表里。虽然这种方式非常灵活,但在实际开发过程中更推荐直接指定参数名称以提高可读性和维护性: ```python def print_two_again(arg1, arg2): print(f"arg1: {arg1}, arg2: {arg2}") ``` 这样做的好处是可以让其他开发者更容易理解该函数的作用及其输入输出关系[^2]。 #### 返回值处理 除了简单的打印功能外,许多情况下我们还需要从函数获取某些计算后的数据作为进一步逻辑的基础。这便需要用到 `return` 语句。下面是一个例子说明了这一点: ```python def add(a, b): return a + b result = add(5, 7) print(result) # 输出将会是 '12' ``` 这里展示了一个基本加法运算器的功能实现方式——它不仅完成了数值相加的操作还把最终的结果交给了外部程序继续利用[^3]。 #### 练习建议 为了更好地掌握这一章节的知识点,《Learn Python the Hard Way》鼓励读者模仿书中给出的例子编写自己的脚本文件,并尝试修改其中的部分细节观察其行为变化情况。这种实践型的习方法有助于加深记忆效果同时培养解决问题的能力[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值