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

#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日

悬赏问题

  • ¥15 平板录音机录音问题解决
  • ¥15 请问维特智能的安卓APP在手机上存储传感器数据后,如何找到它的存储路径?
  • ¥15 (SQL语句|查询结果翻了4倍)
  • ¥15 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用
  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启