簡體   English   中英

def python 函數不會返回

[英]def python function would not return

所以我想從 JSON 文件中制作清單,為什么這個代碼不會返回任何東西?

import os
import json

def get_data():
    with open(os.path.dirname(os.path.realpath(__file__))+"/items.json") as f:
        data = json.load(f)
    return data

def save_data(data):
    with open(os.path.dirname(os.path.realpath(__file__))+"/items.json", "w") as f:
        json.dump(data, f, indent=4)

def modify_item(name,category,mode):
    data = get_data()
    temp = data[str(category)]
    y = {str(name): 1}
    if mode == "+":
        for index in range(len(temp)):
            if data[str(category)][int(index)][str(name)] == str(name):
                data[str(category)][int(index)][str(name)] += 1
        return data
    elif mode == "-":
        data[str(category)][int(index)][str(name)] -= 1
        return data
    elif mode == "a":
        temp.append(y)
        return data

save_data(modify_item(name="Potato fries", category="Foods", mode="+"))

json文件

{
    "Foods": [
        {
            "Potato fries": 1
        }
    ],
    "Misc": [
        {
            "Disc": 1
        }
    ]
}

它不會改變“薯條”鍵。 控制台只是沒有顯示錯誤,有人解釋原因嗎?

在“+”模式下,您的條件永遠不會滿足,因為您將名稱(字符串)與字典中字段名稱的值(在本例中為 int)進行比較。

當然不是最好/最干凈的方法,但如果你只是用 try 和 except 語句替換你的 if ,它就可以工作:

try:
    data[str(category)][int(index)][str(name)] += 1
except:
   print("Name given is not in the available categories.")
   break

https://www.w3schools.com/python/python_try_except.asp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM