牧师403 2022-02-08 14:48 采纳率: 75%
浏览 51
已结题

#python 我用for遍历了列表中的字典,但是在调字典中的get()时报错了,想请教一下

问题遇到的现象和发生背景

我用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

  • 写回答

4条回答 默认 最新

  • 陈年椰子 2022-02-08 15:22
    关注

    这个字典的使用,没用到字典的特点。改一下,供参考。

    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
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 已采纳回答 2月8日
  • 创建了问题 2月8日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备