01、任务展示
小猪佩奇游戏程序的运行结果如图1 所示。
■ 图1 项目 3 任务 3 程序运行结果
小猪佩奇的原始图片如图2 所示。
■ 图2 小猪佩奇原始图片
02、任务实现
小猪佩奇游戏具体实现代码如下。
03、相关知识链接
1、从文件中读取数据
Python 内置的 open ()函数用于打开一个指定的 Python 文件或者是非 Python 文件,并创建一个 file 对象,可以读写文件中的内容。
基本语法如下。
各个参数的含义如表1 所示。
■ 表1 open ()函数参数及含义
不同模式打开文件的参数及含义如表2 所示。
■ 表2 不同模式打开文件的参数及含义
注意
(1)文件可以看作 Python 中的一种数据类型。
(2)文件打开的模式中,不同模式的参数可以组合在一起对文件进行操作,如 ' rt '表示以只读模式打开文本文件,' wb '表示以读写模式打开二进制文件。
(3)open ()函数参数 newline 表示换行符模式。由于不同的操作系统中换行符不同,因此,换行符有 ' \n '、' \r '、' \r\n '等。
(4)open ()函数在读取文件时,可以通过设置文件的相对路径或者绝对路径位置查找文件。
(5)open ()函数在读取文件时,可以读取整个文件,也可以逐行读取。
例1 在默认路径下,原样读取事先保存的整个记事本“文本 .txt ”中的内容。
with open('文件.txt') as file_object:
contents=file_object.read()
print(contents)
运行程序,输出结果如图3 所示。
■ 图3 例1 运行结果
例2 逐行读取指定路径下的记事本“文本 .txt ”中的内容( d :\cxl\ 文本 .txt )。
with open('d:\cxl\文件.txt') as file_object:
for line in file_object:
print(line)
运行程序,输出结果如图4 所示。
■ 图4 例2 运行结果
注意
细心的读者会发现,例1 读取整个文本文件后,末尾多了一行空行,而在例2 读取每行文本文件后,在每行的结尾又出现了空行。因为 read ()函数在读取文件到达文件末尾时,系统会返回一个空字符串,而这个空字符串显示出来就是一个空行。要删除末尾的空行,可在输出语句中使用rstrip ()(删除右侧尾随空格)、strip ()(删除字符串前后所有的空格)。
例3 读取指定路径下的记事本“文本 .txt ”中的内容并使用( d :\cxl\ 文本 .txt )。
file_name='d:\cxl\文件.txt'
with open(file_name) as file_object:
lines=file_object.readlines()
check_string=''
for line in lines:
check_string+=line.strip()
print("原来字符串:",check_string.strip())
print("替换后的字符串",check_string.replace('人','我'))
运行程序,输出结果如图5 所示。
■ 图5 例3 运行结果
2、写入文件
将新内容增加到指定的文件中,可以通过写文件的方式实现。可以写一行内容,也可以写入多行。
例5 写入两行内容到“ d :\cxl\ 文件 .txt ”中并输出。
file_name='d:\cxl\文件.txt'
with open(file_name,'w') as file_object:
file_object.write("I love Python\n")
file_object.write("Python is my love best")
with open(file_name) as file_object:
for line in file_object:
print(line.strip())
运行程序,输出结果如图6 所示。
■ 图6 例5 运行结果
3、附加内容到文件
例 6 中实现了用新的文本替换原有的文件内容。若想在原有文件内容的基础上增加新的内容,Python 依旧可以实现。
例7 写入新文本内容到“ D :\cxl\ 文件 .txt ”中并输出。
file_name='d:\cxl\文件.txt'
with open(file_name,'a') as file_object:
file_object.write("\nDo you like Python?\n")
file_object.write("I think,Python is your love best too!")
with open(file_name) as file_object:
for line in file_object:
print(line.strip())
运行程序,输出结果如图6 所示。
■ 图6 例 7 运行结果