【问题标题】:I got a problem on a currency project on discord.py [duplicate]我在 discord.py 上的货币项目遇到问题 [重复]
【发布时间】:2022-01-31 18:53:42
【问题描述】:

我有一个带有货币程序的 discord.py 文件。 但它卡在了 f: with open 行中

"

async def open_account(user):
  users = await get_bank_data()

  if str (user.id) in users:
      return False
  else:
        users[str(user.id)] = {}
        users[str(user.id)]["wallet"] = 0
        users[str(user.id)]["bank"] = 0
    with open("mainbank.json", "w") as f:
       json.dump(users, f)
       return True

错误提示:unindent 不匹配任何外部缩进级别

请帮帮我

【问题讨论】:

    标签: python indentation


    【解决方案1】:

    你的缩进量要一致,尽量坚持只用TAB一次。

    尝试将那段代码替换为:

    async def open_account(user):
        users = await get_bank_data()
    
        if str (user.id) in users:
            return False
        else:
            users[str(user.id)] = {}
            users[str(user.id)]["wallet"] = 0
            users[str(user.id)]["bank"] = 0
        with open("mainbank.json", "w") as f:
            json.dump(users, f)
            return True
    

    在您提供的代码中,您从缩进 2 开始,然后到 4,然后到 3。如果您使用的是 IDE,例如 VSCode,则有一个用于配置自动缩进大小的内置选项. 如果您使用的是 VSCode,请尝试 CTRL+P 并输入 '>indent'

    【讨论】:

    • 嘿!感谢您的回答!不,我使用 Replit。但现在它说: async def open_account(user): users = await get_bank_data() if str (user.id) in users: return False else: users[str(user.id)] = {} users[str(user .id)]["wallet"] = 0 users[str(user.id)]["bank"] = 0 with open("mainbank.json", "w") as f: json.dump(users, f ) return True async def get_bank_data(): with open("MainBank.json", "r") as f: users = json.load(f) return users is wrong at with open("MainBank.json", "r" ) 作为 f:
    • 请澄清@VladAndrei,我们无法从您的评论中理解任何事情
    • @VladAndrei 尝试删除'async',因为你不应该使用任何不是命令或内置 discord.py 函数的东西。例如,get_bank_data() 不需要 await 或 async。
    • 是的,但是在 get_bank_data() with open("MainBank.json", "r") as f: users = json.load(f) return users 它不喜欢第二行打开
    • @VladAndrei 能否提供一下 get_bank_data 的内容
    【解决方案2】:

    你的缩进级别搞砸了。 Python 使用空格来定义大多数其他语言会使用大括号的块。只要您在整个脚本中为每个缩进级别使用相同数量的空格,这种方法就可以很好地工作。

    因此,如果您从第一级开始(没有缩进)并决定每级缩进量为 4 个空格,那么您的第二级有 4 个空格,第三级有 8 个,第四级有 12 个,等等。

    p>

    无论你在哪里有一个二级块,你都必须给它 4 个缩进空格,否则 Python 解释器会抛出你得到的错误。

    您可以在 PEP8 的缩进部分找到有关如何正确执行此操作的更多信息:https://www.python.org/dev/peps/pep-0008/#indentation

    一个好的 IDE 可以帮助你正确地格式化你的代码 ;-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      相关资源
      最近更新 更多