Python编程:从入门到实践(第2版)第十章课后题

第十章

10.1

练习10-1:Python学习笔记  在文本编辑器中新建一个文件,写几句话来总结 一下你至此学到的Python知识,其中每一行都以“In Python you can”打头。 将这个文件命名为learning_python.txt,并存储到为完成本章练习而编写的程 序所在的目录中。编写一个程序,它读取这个文件,并将你所写的内容打印三 次:第一次打印时读取整个文件;第二次打印时遍历文件对象;第三次打印时 将各行存储在一个列表中,再在with 代码块外打印它们。

# 将内容写入 learning_python.txt 文件
with open('learning_python.txt', 'w') as file:
    file.write("在Python中,你可以:\n")
    file.write("- 定义变量并为其赋值。\n")
    file.write("- 使用控制结构,如if语句和循环。\n")
    file.write("- 定义并调用函数来组织你的代码。\n")
    file.write("- 导入模块并使用它们的功能。\n")
    file.write("- 使用try-except块处理异常。\n")

# 读取文件的内容并打印三次
filename = 'learning_python.txt'

# 读取整个文件
print("\n读取整个文件:")
with open(filename) as file:
    contents = file.read()
    print(contents)

# 遍历文件对象
print("\n遍历文件对象:")
with open(filename) as file:
    for line in file:
        print(line.strip())

# 将行存储在列表中,并在with代码块外部打印它们
print("\n将行存储在列表中:")
with open(filename) as file:
    lines = file.readlines()

for line in lines:
    print(line.strip())

练习10-2:C语言学习笔记  可使用方法replace() 将字符串中的特定单词 都替换为另一个单词。下面是一个简单的示例,演示了如何将句子中的'dog' 替换为'cat' :

>>> message = "I really like dogs."

>>> message.replace('dog', 'cat')

'I really like cats.'

读取你刚创建的文件learning_python.txt中的每一行,将其中的Python都替换 为另一门语言的名称,比如C。将修改后的各行都打印到屏幕上。

# 练习10-2:C语言学习笔记

# 读取文件 learning_python.txt 中的每一行,并将 Python 替换为 C
filename = 'learning_python.txt'

print("替换前的内容:")
with open(filename) as file:
    for line in file:
        print(line.strip())

print("\n替换后的内容:")
with open(filename) as file:
    for line in file:
        modified_line = line.replace('Python', 'C')
        print(modified_line.strip())

10.2

练习10-3:访客  编写一个程序,提示用户输入名字。用户做出响应后,将其 名字写入文件guest.txt中。

# 练习10-3:访客

name = input("请输入您的名字:")

filename = 'guest.txt'
with open(filename, 'w') as file:
    file.write(name)

练习10-4:访客名单  编写一个while 循环,提示用户输入名字。用户输入 名字后,在屏幕上打印一句问候语,并将一条到访记录添加到文件 guest_book.txt中。确保这个文件中的每条记录都独占一行。

# 练习10-4:访客名单

filename = 'guest_book.txt'

print("欢迎访客!(输入 'quit' 退出)")
while True:
    name = input("请输入您的名字:")
    if name == 'quit':
        break
    else:
        with open(filename, 'a') as file:
            file.write(name + "\n")
            print(f"欢迎您,{name}!")

练习10-5:调查  编写一个while 循环,询问用户为何喜欢编程。每当用户 输入一个原因后,都将其添加到一个存储所有原因的文件中。

# 练习10-5:调查

filename = 'programming_survey.txt'

print("为什么您喜欢编程?(输入 'quit' 退出)")
while True:
    reason = input("请输入您喜欢编程的原因:")
    if reason == 'quit':
        break
    else:
        with open(filename, 'a') as file:
            file.write(reason + "\n")

10.3

练习10-6:加法运算  提示用户提供数值输入时,常出现的一个问题是,用户 提供的是文本而不是数。在此情况下,当你尝试将输入转换为整数时,将引发 ValueError 异常。编写一个程序,提示用户输入两个数,再将其相加并打印 结果。在用户输入的任何一个值不是数时都捕获ValueError 异常,并打印一 条友好的错误消息。对你编写的程序进行测试:先输入两个数,再输入一些文 本而不是数。

# 练习10-6:加法运算

try:
    num1 = int(input("请输入第一个数:"))
    num2 = int(input("请输入第二个数:"))
    result = num1 + num2
    print(f"结果:{result}")
except ValueError:
    print("输入的值不是有效的整数,请输入数字。")

练习10-7:加法计算器  将为完成练习10-6而编写的代码放在一个while 循 环中,让用户犯错(输入的是文本而不是数)后能够继续输入数。

# 练习10-7:加法计算器

while True:
    try:
        num1 = int(input("请输入第一个数:"))
        num2 = int(input("请输入第二个数:"))
        result = num1 + num2
        print(f"结果:{result}")
    except ValueError:
        print("输入的值不是有效的整数,请输入数字。")
    else:
        break

练习10-8:猫和狗  创建文件cats.txt和dogs.txt,在第一个文件中至少存储 三只猫的名字,在第二个文件中至少存储三条狗的名字。编写一个程序,尝试 读取这些文件,并将其内容打印到屏幕上。将这些代码放在一个try-except 代码块中,以便在文件不存在时捕获FileNotFound 错误,并显示一条友好的 消息。将任意一个文件移到另一个地方,并确认except 代码块中的代码将正 确执行。

# 练习10-8:猫和狗

filenames = ['cats.txt', 'dogs.txt']

for filename in filenames:
    try:
        with open(filename, 'r') as file:
            print(f"文件 {filename} 内容:")
            print(file.read())
    except FileNotFoundError:
        print(f"文件 {filename} 不存在。")

练习10-9:静默的猫和狗  修改你在练习10-8中编写的except 代码块,让程 序在任意文件不存在时静默失败。

# 练习10-9:静默的猫和狗

filenames = ['cats.txt', 'dogs.txt']

for filename in filenames:
    try:
        with open(filename, 'r') as file:
            print(f"文件 {filename} 内容:")
            print(file.read())
    except FileNotFoundError:
        pass

练习10-10:常见单词  访问古登堡计划,找一些你想分析的图书。下载这些 作品的文本文件或将浏览器中的原始文本复制到文本文件中。 可以使用方法count() 来确定特定的单词或短语在字符串中出现了多少次。例如,下面的代码计算'row' 在一个字符串中出现了多少次:

>>> line = "Row, row, row your boat"

>>> line.count('row')

2

>>> line.lower().count('row')

3

请注意,通过使用lower() 将字符串转换为小写,可捕捉要查找单词的所有格 式,而不管其大小写如何。 编写一个程序,它读取你在古登堡计划中获取的文件,并计算单词'the' 在每 个文件中分别出现了多少次。这里计算得到的结果并不准确,因为将诸 如'then' 和'there' 等单词也计算在内了。请尝试计算'the ' (包含空 格)出现的次数,看看结果相差多少

# 练习10-10:常见单词

def count_word_occurrences(filename, word):
    try:
        with open(filename, 'r') as file:
            contents = file.read()
            count = contents.lower().count(word)
            print(f"单词 '{word}' 在文件 {filename} 中出现了 {count} 次。")
    except FileNotFoundError:
        print(f"文件 {filename} 不存在。")

# 替换为你的文件名和要搜索的单词
filename = 'your_book.txt'
word = 'the'
count_word_occurrences(filename, word)

10.4

练习10-11:喜欢的数  编写一个程序,提示用户输入喜欢的数,并使用 json.dump() 将这个数存储到文件中。再编写一个程序,从文件中读取这个 值,并打印如下所示的消息。

I know your favorite number! It's _____.

# 练习10-11:喜欢的数

import json

favorite_number = input("请输入你喜欢的数字:")

filename = 'favorite_number.json'
with open(filename, 'w') as file:
    json.dump(favorite_number, file)
    print("已将喜欢的数字存储到文件中。")

练习10-12:记住喜欢的数  将练习10-11中的程序合二为一。如果存储了用户 喜欢的数,就向用户显示它,否则提示用户输入喜欢的数并将其存储到文件 中。运行这个程序两次,看看它能否像预期的那样工作。

# 练习10-12:记住喜欢的数

import json

filename = 'favorite_number.json'

try:
    with open(filename) as file:
        favorite_number = json.load(file)
        print(f"I know your favorite number! It's {favorite_number}.")
except FileNotFoundError:
    favorite_number = input("请输入你喜欢的数字:")
    with open(filename, 'w') as file:
        json.dump(favorite_number, file)
        print("已将喜欢的数字存储到文件中。")

练习10-13:验证用户  最后一个remember_me.py版本假设用户要么已输入用 户名,要么是首次运行该程序。我们应该修改这个程序,以防当前用户并非上 次运行该程序的用户。 为此,在greet_user() 中打印欢迎用户回来的消息前,询问他用户名是否正 确。如果不对,就调用get_new_username() 让用户输入正确的用户名。

# 练习10-13:验证用户

import json

def get_stored_username():
    filename = 'username.json'
    try:
        with open(filename) as file:
            username = json.load(file)
    except FileNotFoundError:
        return None
    else:
        return username

def get_new_username():
    username = input("请输入你的用户名:")
    filename = 'username.json'
    with open(filename, 'w') as file:
        json.dump(username, file)
    return username

def greet_user():
    username = get_stored_username()
    if username:
        correct = input(f"你好,{username}!是否这是你的用户名?(yes/no) ")
        if correct.lower() == 'no':
            username = get_new_username()
    else:
        username = get_new_username()
    print(f"欢迎回来,{username}!")

greet_user()

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值