为了账号安全,请及时绑定邮箱和手机立即绑定

如何更新 CSV 文件中的特定位置?

如何更新 CSV 文件中的特定位置?

四季花海 2022-10-18 19:42:27
我目前正在为我们提供一个图书馆系统的骨架代码。用户能够从允许他们查询或签入/签出项目的菜单中输入各种命令。这些项目存储在两个 CSV 文件中(library_collections["movies"]、library_collections["books"] 并且已经由骨架代码加载。我已经为查询功能编写了代码,但是,我遇到了问题入住/退房功能。用户在菜单中输入命令后,系统会提示他们输入项目 ID,然后该 ID 应该与 CSV 文件中的 ID 匹配。这是我的签到代码。 def cib(id , library_collections):     for i in library_collections["books"]:         if id == i["ID"]:             i["Available"]=i["Available"]+1             return 'Item has successfully Been Checked In'         elif id != i['ID']:             return 'Please restart the program and enter a valid ID'签入的输出 output: None这是我的结帐代码。def cob(id, library_collections):    for i in library_collections["books"]:        if id == i["ID"]:            if i["Available"] > 0:                i["Available"] = i["Available"] - 1                return('Item Successfully Checked-out')            elif i["Available"] == 0:                print('There are no more available copies')        elif id != i["ID"]:            return'Please restart the program and enter a valid ID'Check out 的输出 output: 'Please restart the program and enter a valid ID'每当我输入我知道在 CSV 文件中的 ID 时,这两个函数都会给我与上面写的相同的输出。因此,两者都对 CSV 文件没有影响。
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

如果您的引导不是列表中的第一个,则您将落入 elif 并返回错误消息


这可能有效:


def cib(id , library_collections):

     for i in library_collections["books"]:

         if id == i["ID"]:

             i["Available"]=i["Available"]+1

             return 'Item has successfully Been Checked In'

     return 'Please restart the program and enter a valid ID'

因此,您首先遍历所有书籍,如果找不到该书籍,您将返回错误消息。


cob方法中的相同内容


循环遍历字典列表不是有效的方法。如果我正在编写类似的代码并且由于某种原因我无法使用正确的数据库,我会将 CSV 解析为 dict。数据模型可能是这样的:


{ 1: {"available": 10, "name": "Hamlet", "author": "W. Shakespeare", "year": 1609},

  123: {"available": 0, "name": "Война и мир", "author": "L. Tolstoi", "year": 1869},

}

其中 1 和 123 是 ID。您也可以将字符串用作 id。然后你简单地做你的方法


def cib(id, library_collection): 

   try:

       library_collection[id]["available"] += 1

       return 'Item has successfully Been Checked In'

   except:

        return 'Please restart the program and enter a valid ID'

或者


def cib(id, library_collection): 

    if id in library_collection:

       library_collection[id]["available"] += 1

       return 'Item has successfully Been Checked In'

    else:

        return 'Please restart the program and enter a valid ID'

避免 for 循环总是好主意。


查看完整回答
反对 回复 2022-10-18
  • 1 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信