我用for遍历了列表中的字典,但是在调字典中的get()时报错了,想请教一下
print('**************图书管理系统**************')
library = [{'name':'三体','author':'刘慈欣','price':24,'number':5},
{'name':'流浪地球','author':'刘慈欣','price':26,'number':9}
,{'name':'平凡的世界','author':'路遥','price':108,'number':3}
,{'name':'活着','author':'余华','price':20,'number':4}]
while 1:
print('1.借书\n2.还书\n3.查询\n4.退出')
choice = int(input('请选择功能:'))
if choice == 1:
i_name = input('请输入所要借阅的书:')
for book in library:
if book.get('name') == i_name:
print(f'您所要借的书当前还有{book.get("number")}本\n请妥善保管好书籍并及时归还')
elif choice == 2:
i_name = input('请输入所要借阅的书:')
for book in library:
if book.get('name') == i_name:
print(f'您所要借的书当前还有{book.get("number")}本\n请妥善保管好书籍并及时归还')
book.get('number') -= 1
elif choice == 3:
pass
elif choice == 4:
import time
print('正在退出系统,请稍后~')
time.sleep(2)
print('退出成功!')
break
想在实现借书功能后,将字典中‘number’对应的value值减1
这个字典的使用,没用到字典的特点。改一下,供参考。
import time
library = {'三体': {'name': '三体', 'author': '刘慈欣', 'price': 24, 'number': 5}, '流浪地球': {'name': '流浪地球', 'author': '刘慈欣', 'price': 26, 'number': 9}, '平凡的世界': {'name': '平凡的世界', 'author': '路遥', 'price': 108, 'number': 3}, '活着': {'name': '活着', 'author': '余华', 'price': 20, 'number': 4}}
print('**************图书管理系统**************')
while 1:
print('1.借书\n2.还书\n3.查询\n4.退出')
choice = int(input('请选择功能:'))
if choice == 1:
i_name = input('请输入所要借阅的书:')
if i_name in library:
print('您所要借的书当前还有{}本\n请妥善保管好书籍并及时归还'.format(library[i_name]["number"]))
library[i_name]["number"] = library[i_name]["number"] -1
elif choice == 2:
i_name = input('请输入所要借阅的书:')
if i_name in library:
library[i_name]["number"] = library[i_name]["number"] + 1
print('您所要还的书当前还有{}本'.format(library[i_name]["number"]))
elif choice == 3:
pass
elif choice == 4:
print('正在退出系统,请稍后~')
time.sleep(2)
print('退出成功!')
break
book.get('number') -= 1这句代码有问题
for book in library:
if book['name'] == i_name:
print(f'您所要借的书当前还有{book.get("number")}本\n请妥善保管好书籍并及时归还')
book['number'] -= 1
那就这样取吧。
library[0].get('number') 只能取值,不能赋值的
library[0]['number'] -= 1 只能这样赋值
library[0]的索引可以通过enumerate(book)获得,代码大致如下:
for idx, book in enumerate(library):
if book.get('name') == i_name:
library[idx]['name'] -= 1