我什么都不懂。我已经检查了所有内容,在 IDLE 中,我通过格式> 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('Тебе не из чего стрелять!')
答案 0 :(得分:0)
我绘制了您的代码。看到抛出错误的行与之前的任何缩进不一致吗? Python 不知道如何处理它,所以它会抛出一个错误。一般来说,尽量让你的缩进总是有相同数量的空格,以避免这种情况。
考虑这两段代码:
a = 3
if a < 5:
if a < 2:
print("option 1")
else:
print("option 2")
这里,“else”是关于 if a < 2
语句的,因此将打印“选项 2”。比较一下:
a = 3
if a < 5:
if a < 2:
print("option 1")
else:
print("option 2")
这里不会打印任何内容,因为 else
指的是 if a < 5
行。现在想象:
a = 3
if a < 5:
if a < 2:
print("option 1")
else:
print("option 2")
if
指的是哪个 else
语句?这是模棱两可的,所以 python 说“解决这个问题!”而不是猜测。