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

我目前正在为我们提供一个图书馆系统的骨架代码。用户能够从允许他们查询或签入/签出项目的菜单中输入各种命令。


这些项目存储在两个 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 文件没有影响。


四季花海
浏览 107回答 1
1回答

幕布斯6054654

如果您的引导不是列表中的第一个,则您将落入 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 循环总是好主意。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python