1.编写一个程序: (1)新建一个文本文件,里面有若干行文本 (2)打开指定的文本文件,在每一行前加行号后将其输出到另一个文本文件中 (3)改变文本文件路径,实现上述功能,理解绝对路径和相对路径 完善本实验指导书中题目(4)(图书管理)的代码,使之具有如下功能: 按出版社、作者从文件中查找书名; 输出同一出版社出版的所有书名; 输出文件中的所有书名等功能。
时间: 2024-02-10 22:06:49 浏览: 44
好的,我来依次回答你的两个问题。
1. 以下是Python代码实现的程序,可以实现在每个文本行前加上行号并输出到另一个文本文件中。
```python
# 打开原始文本文件和目标文本文件
with open('input.txt', 'r') as f1, open('output.txt', 'w') as f2:
# 遍历每一行文本
for i, line in enumerate(f1):
# 在行号前加上一个制表符
f2.write(f'{i+1}\t{line}')
```
其中,`input.txt`是原始文本文件的路径,`output.txt`是目标文本文件的路径。在上面的代码中,我们使用了`with`语句来打开文件,这样可以自动关闭文件,避免了手动关闭文件时可能出现的错误。
2. 以下是Python代码实现的图书管理系统,可以实现按出版社、作者从文件中查找书名,输出同一出版社出版的所有书名,以及输出文件中的所有书名等功能。
```python
import os
# 定义书籍类
class Book:
def __init__(self, name, author, publisher):
self.name = name
self.author = author
self.publisher = publisher
def __str__(self):
return f'{self.name}, {self.author}, {self.publisher}'
# 读取书籍信息
def read_books():
books = []
with open('books.txt', 'r') as f:
for line in f:
name, author, publisher = line.strip().split(',')
books.append(Book(name, author, publisher))
return books
# 按出版社查找书籍
def find_by_publisher(publisher, books):
result = []
for book in books:
if book.publisher == publisher:
result.append(book)
return result
# 按作者查找书籍
def find_by_author(author, books):
result = []
for book in books:
if book.author == author:
result.append(book)
return result
# 输出所有书籍
def print_all_books(books):
for book in books:
print(book)
# 输出同一出版社出版的所有书籍
def print_publisher_books(publisher, books):
for book in find_by_publisher(publisher, books):
print(book)
# 主函数
if __name__ == '__main__':
books = read_books()
while True:
print('1. 按出版社查找书籍')
print('2. 按作者查找书籍')
print('3. 输出所有书籍')
print('4. 输出同一出版社出版的所有书籍')
print('5. 退出')
choice = input('请选择:')
if choice == '1':
publisher = input('请输入出版社名称:')
print_publisher_books(publisher, books)
elif choice == '2':
author = input('请输入作者名称:')
for book in find_by_author(author, books):
print(book)
elif choice == '3':
print_all_books(books)
elif choice == '4':
publisher = input('请输入出版社名称:')
print_publisher_books(publisher, books)
elif choice == '5':
break
else:
print('无效的选择')
```
在这个程序中,我们定义了一个`Book`类来表示一本书的信息,然后通过读取`books.txt`文件来获取所有的书籍信息。之后,我们可以通过调用`find_by_publisher`和`find_by_author`函数来按出版社和作者查找书籍,通过调用`print_all_books`和`print_publisher_books`函数来输出所有书籍和同一出版社出版的所有书籍。在主函数中,我们使用一个循环来不断接受用户的选择,直到用户选择退出。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)