首页 > 解决方案 > 在这种情况下,我如何让我的 else 在 python 中执行?

问题描述

现在只有if并且elif实际工作,我知道为什么,但我不知道如何解决它。在此之前我尝试了很多,我终于到了它几乎可以工作的地步,但我无法弄清楚了。如果有帮助,它是一个不和谐的命令。

这就是我所拥有的,不要介意愚蠢的变量和类似的东西:

    with open("lb.json","r+")as L:
      big_oof=json.loads(L.read())
      for loser in big_oof["losers"]:
        if loser["name"] == ctx.author.id:
          loser["addiction"]=+1
          print("if")
          break
        elif loser["name"] != ctx.author.id:
          print("elif")
          continue
        else:
          big_oof["losers"].append({"name":ctx.author.id,"addiction":1})
          print("else")
      print(big_oof)
      L.seek(0)
      L.truncate()
      json.dump(big_oof,L)

编辑:感谢您的帮助!我已经接受了答案,但我的评论由于某种原因似乎不起作用,无论如何,再次感谢!

标签: python

解决方案


您需要等到循环完成以确保ctx.authot.idin 不在集合中:

with open("lb.json","r+")as L:
    big_oof=json.loads(L.read())
    found = False
    for loser in big_oof["losers"]:
        if loser["name"] == ctx.author.id:
          loser["addiction"] += 1
          found = True
          break
    if not found:
        big_oof["losers"].append({"name":ctx.author.id,"addiction":1})
    print(big_oof)

推荐阅读