import csv
class Book:
def __init__(self, bNo, bName, bClass, bPublic, bAuthor, bPrice, bNum, bDate):
self.bNo = bNo
self.bName = bName
self.bClass = bClass
self.bPublic = bPublic
self.bAuthor = bAuthor
self.bPrice = bPrice
self.bNum = bNum
self.bDate = bDate
class Borrow:
def __init__(self, bNo, rNo, bDate, rDate):
self.bNo = bNo
self.rNo = rNo
self.bDate = bDate
self.rDate = rDate
class Reader:
def __init__(self, rNo, rPwd, rName, rDept, rSex, rTel, rRole):
self.rNo = rNo
self.rPwd = rPwd
self.rName = rName
self.rDept = rDept
self.rSex = rSex
self.rTel = rTel
self.rRole = rRole
class BookManager:
def __init__(self, filename):
self.filename = 'C:/Users/Desktop/python期末大作业2022.2/book.txt'
self.books = []
self.load_books()
def load_books(self):
with open(self.filename, 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
book = Book(*row)
self.books.append(book)
def save_books(self):
with open(self.filename, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
for book in self.books:
writer.writerow([book.bNo, book.bName, book.bClass, book.bPublic, book.bAuthor,
book.bPrice, book.bNum, book.bDate])
#添加书籍
def add_book(self, book):
self.books.append(book)
self.save_books()
def update_book(self, bNo, new_book):
for i, book in enumerate(self.books):
if book.bNo == bNo:
self.books[i] = new_book
self.save_books()
return True
return False
#删除书籍
def delete_book(self, bNo):
for i, book in enumerate(self.books):
if book.bNo == bNo:
del self.books[i]
self.save_books()
return True
return False
def query_book(self, bNo):
for book in self.books:
if book.bNo == bNo:
return book
return None
def browse_books(self):
for book in self.books:
print(f"{book.bNo} | {book.bName} | {book.bClass} | {book.bPublic} | {book.bAuthor} | {book.bPrice} | {book.bNum} | {book.bDate}")
class BorrowManager:
def __init__(self, filename):
self.filename = "C:/Users/Desktop/python期末大作业2022.2/borrow.txt"
self.borrows = []
self.load_borrows()
def load_borrows(self):
with open(self.filename, 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
borrow = Borrow(*row)
self.borrows.append(borrow)
def save_borrows(self):
with open(self.filename, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
for borrow in self.borrows:
writer.writerow([borrow.bNo, borrow.rNo, borrow.bDate, borrow.rDate])
def add_borrow(self, borrow):
self.borrows.append(borrow)
self.save_borrows()
def browse_borrows(self):
for borrow in self.borrows:
print(f"{borrow.bNo} | {borrow.rNo} | {borrow.bDate} | {borrow.rDate}")
class ReaderManager:
def __init__(self, filename):
self.filename = "C:/Users/Desktop/python期末大作业2022.2/reader.txt"
self.readers = []
self.load_readers()
def load_readers(self):
with open(self.filename, 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
reader = Reader(*row)
self.readers.append(reader)
def save_readers(self):
with open(self.filename, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
for reader in self.readers:
writer.writerow([reader.rNo, reader.rPwd, reader.rName, reader.rDept, reader.rSex,
reader.rTel, reader.rRole])
def add_reader(self, reader):
self.readers.append(reader)
self.save_readers()
def update_reader(self, rNo, new_reader):
for i, reader in enumerate(self.readers):
if reader.rNo == rNo:
self.readers[i] = new_reader
self.save_readers()
return True
return False
def delete_reader(self, rNo):
for i, reader in enumerate(self.readers):
if reader.rNo == rNo:
del self.readers[i]
self.save_readers()
return True
return False
def query_reader(self, rNo):
for reader in self.readers:
if reader.rNo == rNo:
return reader
return None
def browse_readers(self):
for reader in self.readers:
print(f"{reader.rNo} | {reader.rName} | {reader.rDept} | {reader.rSex} | {reader.rTel} | {reader.rRole}")
def add_book_menu(manager):
bNo = input("请输入书号:")
bName = input("请输入书名:")
bClass = input("请输入类别:")
bPublic = input("请输入出版社:")
bAuthor = input("请输入作者:")
bPrice = input("请输入定价:")
bNum = input("请输入数量:")
bDate = input("请输入购买日期:")
book = Book(bNo, bName, bClass, bPublic, bAuthor, bPrice, bNum, bDate)
manager.add_book(book)
print("添加图书成功!")
def update_book_menu(manager):
bNo = input("请输入要修改的图书的书号:")
book = manager.query_book(bNo)
if book is None:
print("未找到对应的图书!")
return
bName = input(f"请输入新的书名(原书名:{book.bName}):")
bClass = input(f"请输入新的类别(原类别:{book.bClass}):")
bPublic = input(f"请输入新的出版社(原出版社:{book.bPublic}):")
bAuthor = input(f"请输入新的作者(原作者:{book.bAuthor}):")
bPrice = input(f"请输入新的定价(原定价:{book.bPrice}):")
bNum = input(f"请输入新的数量(原数量:{book.bNum}):")
bDate = input(f"请输入新的购买日期(原购买日期:{book.bDate}):")
new_book = Book(bNo, bName, bClass, bPublic, bAuthor, bPrice, bNum, bDate)
if manager.update_book(bNo, new_book):
print("修改图书成功!")
else:
print("修改图书失败!")
def delete_book_menu(manager):
bNo = input("请输入要删除的图书的书号:")
if manager.delete_book(bNo):
print("删除图书成功!")
else:
print("删除图书失败!")
def query_book_menu(manager):
bNo = input("请输入要查询的图书的书号:")
book = manager.query_book(bNo)
if book is None:
print("未找到对应的图书!")
else:
print(f"{book.bNo} | {book.bName} | {book.bClass} | {book.bPublic} | {book.bAuthor} | {book.bPrice} | {book.bNum} | {book.bDate}")
def browse_book_menu(manager):
manager.browse_books()
def main_menu():
book_manager = BookManager('book.csv')
borrow_manager = BorrowManager('borrow.csv')
reader_manager = ReaderManager('reader.csv')
while True:
print("======== 图书管理系统 =======")
print("1. 添加图书")
print("2. 修改图书")
print("3. 删除图书")
print("4. 查询图书")
print("5. 浏览图书")
print("0. 退出系统")
choice = input("请选择操作:")
if choice == '1':
add_book_menu(book_manager)
elif choice == '2':
update_book_menu(book_manager)
elif choice == '3':
delete_book_menu(book_manager)
elif choice == '4':
query_book_menu(book_manager)
elif choice == '5':
browse_book_menu(book_manager)
elif choice == '0':
break
else:
print("输入有误,请重新输入!")
if __name__ == '__main__':
main_menu()
这个报错到底是什么意思,最近写代码老是遇到?为什么会显示我没有参数?能给我详细的解决方案吗?
这是各txt文件详情
修改意见
1,把下面.csv文件改成对应的.txt文件
def main_menu():
book_manager = BookManager('book.csv')
borrow_manager = BorrowManager('borrow.csv')
reader_manager = ReaderManager('reader.csv')
,,,,,,,,,,,,
```python
改成:
def main_menu():
book_manager = BookManager("./book.txt")
borrow_manager = BorrowManager("./borrow.txt")
reader_manager = ReaderManager("./reader.txt")
,,,,,,,,,,,,,
2.三个class的初始化改为如此
class ReaderManager:
readers = []
def __init__(self, filename):
self.filename = filename
——————————————————————————————————————————————
class BorrowManager:
borrows = []
def __init__(self, filename):
self.filename = filename
——————————————————————————
class BookManager:
books = []
def __init__(self, filename):
self.filename = filename
3.问题解决,不要白嫖!

应该就是解析文件时没有转化为程序需要的合适,所以提示参数不够,实际上是没有获取到
{"book_id":"001","book_name":"三体","book_loc":"0-0-1"}
{"book_id":"002","book_name":"三体","book_loc":"0-0-2"}
我想问,是不是这些txt文件里的内容与代码的读取方式不同,就必须要像上述格式一样,代码才会读取到吗?如果是这样的,那我要怎么修改,才能改变代码读取方式呢,让他以行顺序读取,以空格为间断符?
基础中文字符的Unicode编码范围是[0x4e00,0x9fa5],请统计给定文本中存在多少该范围内的基础中文字符以及每个字符的出现次数。以如下模式(CSV格式)保存在“侠客行-字符统计.txt”文件中。
侠(0x4fa0):888, 客(0x5ba2):666, 行(0x884c):111
(略)
fi = open("侠客行-网络版.txt", "r", encoding='utf-8')
fo = open("侠客行-字符统计.txt", "w", encoding='utf-8')
txt = fi.read()
d = {}
for c in txt:
if 0x4e00 <= ord(c) <= 0x9fa5: #ord只是把字符转为十进制的unicode编码
d[c] = d.get(c, 0) + 1
ls = []
for key in d:
ls.append("{}(0x{:x}):{}".format(key, ord(key),d[key])) #需要转为16进制 也可用hex,hex会有0x头, {:x}则无头
fo.write(",".join(ls))
fi.close()
fo.close()
问题解答:
在Python中使用input函数接收用户输入时,遇到参数错误的情况,一般是因为传入参数格式不正确或者缺少必要的参数导致的。这时候,我们需要检查代码中传入input函数的参数,保证输入格式正确。
例如,在以上参考资料的代码中,我们可以以列表或者元组形式在调用函数时将输入的参数传递给函数,如下:
x = eval(input()) #将输入的字符串通过eval()去掉引号,变成元组类型
x = list(x) #将元组类型转换成列表类型
print(type(x)) #打印看下此时的数据类型:列表类型
print(x) #打印出来看看
print(cmul(*x)) #用*号把列表中元素变成可变参数传给cmul()函数,结果正确
这里使用了*号,将列表中的元素一一提取,再传递给函数进行运算,避免了因为缺少必要参数或者传入参数格式不正确导致的错误。
此外,在Python中使用input函数接收用户输入时,也可以对输入字符串进行操作,将字符串转换为合适的格式,再传入函数进行计算。例如,当需要输入两个数字并进行比较时,我们可以先将输入的字符串按照空格拆分成列表,再将元素转换成整数进行比较,避免了因为字符串类型无法直接进行比较运算而导致的错误:
str = input()
li = str.split(' ') #以空格为条件,将字符串拆分成列表
#将变量转换为整型,进行比较
if (int)li[0] < (int)li[1]:
print((int)li[0], (int)li[1], sep=' ')
else:
print((int)li[1], (int)li[0], sep=' ')
总之,遇到Python中input函数参数错误的情况,可以从检查输入格式、传入必要参数、转换数据类型等方面入手,逐一排查问题并解决。