IndentationError:unindent 不匹配任何外部缩进级别我啥都不懂[关闭]

Posted

技术标签:

【中文标题】IndentationError:unindent 不匹配任何外部缩进级别我啥都不懂[关闭]【英文标题】:IndentationError: unindent does not match any outer indentation level I do not understand anything [closed]IndentationError:unindent 不匹配任何外部缩进级别我什么都不懂[关闭] 【发布时间】:2021-09-30 22:52:00 【问题描述】:

我什么都不懂。我已经检查了所有内容,在 IDLE 中,我通过 format> tabify 区域翻译了选项卡中的空格。它仍然不起作用。什么不是这样

File "bot.py", line 365
if if_do==True:
               ^  
IndentationError: unindent does not match any outer indentation level

短代码:

 if_do = True
                    if patron in ctx.message.author.roles:
                        await ctx.messsage.author.remove_roles(patron) 
                        await ctx.message.channel.send('И патрон потратил...')
                    break
            if if_do==True: 
                await ctx.message.channel.send('Чел, ты...А патрон...')

所有代码:

@bot.command(pass_context = True)
@commands.cooldown(1, 15, commands.BucketType.user) 
async def shot(ctx, member: discord.Member=None):
    if_do = False
    police = discord.utils.get(ctx.author.guild.roles, id=867662803968065586)
    armor = discord.utils.get(member.guild.roles, id=867692189106044939)
    dead = discord.utils.get(ctx.author.guild.roles, id=867692254746640394)
    hard_blood = discord.utils.get(ctx.author.guild.roles, id=867692258760196116)
    easy_blood = discord.utils.get(ctx.author.guild.roles, id=867692269054459954)
    gun = discord.utils.get(ctx.author.guild.roles, id=868069389365280818)
    patron = discord.utils.get(ctx.author.guild.roles, id=868228372222840913)
    if gun in ctx.message.author.roles:
        if patron in ctx.message.author.roles or police in ctx.message.author.roles:
                if member == None:
                    await ctx.message.channel.send('Выстрел в воздух...Бедная птичка..')
                    if patron in ctx.message.author.roles:
                        await ctx.messsage.author.remove_roles(patron)
                        await ctx.message.channel.send('И патрон потратил...')
                else:
                    mention = member.mention
                    veroyatnost = randint(1,10)
                    telo = ['левую ногу','левую руку','правую ногу','правую ногу','живот','плече','грудь']
                    if veroyatnost>6 and veroyatnost<=10:
                        res = 'В  выстрелили! К счастью пуля не попала в цель.'.format(mention)
                    elif armor in member.roles:
                        res = 'В  стреляли! К счастью на нем был бронежилет, который больше непригоден...'.format(mention)
                        await member.remove_roles(armor)
                    else:
                        if veroyatnost<3:
                            await member.add_roles(dead)
                            res = 'В  выстрелили! Рана смертельная, поздравляю, вы умерли.'.format(mention)
                        elif veroyatnost>=3 and veroyatnost<=4 :
                            await member.add_roles(hard_blood)
                            res = 'В  выстрелили! Ловкое попадание. Тяжелая рана. Выстрел в . Боль. '.format(mention,random.choice(telo))
                        elif veroyatnost>4 and veroyatnost <=6:
                            await member.add_roles(easy_blood)
                            res = 'В  выстрелили! Чудом уклонившись он(а) получил(а) легкое рание в '.format(mention,random.choice(telo))
                    await ctx.message.channel.send(res)
                    if_do = True
                    if patron in ctx.message.author.roles:
                        await ctx.messsage.author.remove_roles(patron) 
                        await ctx.message.channel.send('И патрон потратил...')
                    break
            if if_do==True: 
                await ctx.message.channel.send('Чел, ты...А патрон...')
    else:
        await ctx.message.channel.send('Тебе не из чего стрелять!')

【问题讨论】:

问题正是消息告诉您的:if 语句以独特的级别缩进,语言结构要求它与上面的内容匹配。您对此有何困惑? 【参考方案1】:

我绘制了您的代码。看看抛出错误的行如何与之前的任何缩进不一致? Python 不知道如何处理它,所以它会抛出一个错误。一般来说,尽量让缩进的空格数始终相同,以避免这种情况。

考虑这两段代码:

a = 3
if a < 5:
        if a < 2:
            print("option 1")
        else:
            print("option 2")

这里,“else”与if a &lt; 2 语句有关,因此将打印“option 2”。比较一下:

a = 3
if a < 5:
        if a < 2:
            print("option 1")
else:
    print("option 2")

这里不会打印任何内容,因为else 指的是if a &lt; 5 行。现在想象一下:

a = 3
if a < 5:
        if a < 2:
            print("option 1")
    else:
        print("option 2")

else 指的是哪个if 语句?这是模棱两可的,所以 python 说“修复这个!”而不是猜测。

【讨论】:

以上是关于IndentationError:unindent 不匹配任何外部缩进级别我啥都不懂[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

IndentationError: unindent does not match any outer indentation level

IndentationError: unindent does not match any outer indentation level

报错:IndentationError:unindent does not match any outer indentation level

python中出现IndentationError:unindent does not match

IndentationError: unindent does not match any outer indentation level解决策略

报错内容 IndentationError: unindent does not match any outer indentation level