2015-02-07 2 views
-2

Когда я пытаюсь запустить это, я получаю синтаксическую ошибку, и она не говорит, что это за строка или что-то еще. Я не знаю, что еще я могу сказать .. Вот немного кода, который получает ошибку:Я получаю синтаксическую ошибку, когда пытаюсь запустить это

if "q" in attack: 
     if random.randint(1,100) != range(1,21): 
      print("You hit with a quick attack!") 
      ehp -= 20 
      print("The",enam,"loses 20 damage! It now has",ehp,"health.") 
     else: 
      print("You missed.. :(") 
    elif "p" in attack: 
     if random.randint(1,100) != range(1,51): 
      print("You hit with a power attack!") 
      ehp -= 50 
      print("The",enam,"loses 50 damage! It now has",ehp,"health.") 
     else: 
      print("You missed.. :(") 
    elif "1" in attack: 
     if mana >= skill1[2]: 
      print("You hit with",skill1[0]) 
      ehp -= skill1[1] 
      mana -= skill1[2] 
      print("The",enam,"loses",skill1[1],"damage! It now has",ehp,"health.") 
      print("You now have",mana,"mana.") 
    elif "2" in attack: 
     if mana >= skill2[2]: 
      print("You hit with",skill2[0]) 
      ehp -= skill2[1] 
      mana -= skill2[2] 
      print("The",enam,"loses",skill2[1],"damage! It now has",ehp,"health.") 
      print("You now have",mana,"mana.") 
    elif "3" in attack: 
     if mana >= skill3[2]: 
      print("You hit with",skill3[0]) 
      ehp -= skill3[1] 
      mana -= skill3[2] 
      print("The",enam,"loses",skill3[1],"damage! It now has",ehp,"health.") 
      print("You now have",mana,"mana.") 
    else: 
     print("You typed something wrong.") 

Кстати, skill1, skill2 и skill3 все списки для различных навыков в игре я» умение1 [0] - это имя навыка, умение [1] - сила атаки и умение навыка [2] - это мана, используемая для использования навыка.

skill1 = [] 
skill2 = [] 
skill3 = [] 

skill1.append("Very Weak Fireball") 
skill1.append(20) 
skill1.append(30) 
skill2.append("Weak Fireball") 
skill2.append(30) 
skill2.append(40) 
skill3.append("Average Fireball") 
skill3.append(40) 
skill3.append(50) 
+0

Какая ошибка синтаксиса? Обычно это дает вам номер строки, который неверен, что было бы невероятно полезно здесь. Но, поскольку вы говорите, что этого не происходит, точная ошибка становится все более интересной. –

+0

Убедитесь, что вы правильно отпечатали свой код (первый оператор 'if') – vaultah

+0

Пожалуйста, смотрите ваши отступы .. – Olu

ответ

0

Вы не можете гнездо Элиф внутри если: диапазон

if "q" in attack: # in line with the elif's 
    if random.randint(1,100) > 21: # cannot compare to range use > 
     print("You hit with a quick attack!") 
     ehp -= 20 
     print("The",enam,"loses 20 damage! It now has",ehp,"health.") 
    else: 
     print("You missed.. :(") 
elif "p" in attack: 
    if random.randint(1,100)> 51: # greater that 51 
     print("You hit with a power attack!") 
     ehp -= 50 
     print("The",enam,"loses 50 damage! It now has",ehp,"health.") 
    else: 
     print("You missed.. :(") 
elif "1" in attack: 

Остальная часть вашего синтаксиса кода хорошо, просто изменить к >.

0

В вашем коде есть много проблем. Например:

if random.randint(1,100) != range(1,21): 

, что вы делаете здесь сравнение целое (случайное число от 1 до 100) со списком (выход диапазона, который [1,2, ..., 20). То, что вы имели в виду, вероятно, not (... in range(...)); это нормально, но большинство времени и памяти потребляет метод проверки, является ли число между двумя другими номерами. Однако это не синтаксическая ошибка.

Однако дело в том, что вы не отступали должным образом; ваш elif s должен иметь одинаковую глубину углубления, соответствующую соответствующим if с.

0

Как выход IDLE для меня:

unindent does not match any outer indentation level

Вы не использовали вмятины правильно.

проверка ниже:

if "q" in attack: 
    if random.randint(1,100) != range(1,21): 
     print("You hit with a quick attack!") 
     ehp -= 20 
     print("The",enam,"loses 20 damage! It now has",ehp,"health.") 
    else: 
     print("You missed.. :(") 
elif "p" in attack: 
    if random.randint(1,100) != range(1,51): 
     print("You hit with a power attack!") 
     ehp -= 50 
     print("The",enam,"loses 50 damage! It now has",ehp,"health.") 
    else: 
     print("You missed.. :(") 
elif "1" in attack: 
    if mana >= skill1[2]: 
     print("You hit with",skill1[0]) 
     ehp -= skill1[1] 
     mana -= skill1[2] 
     print("The",enam,"loses",skill1[1],"damage! It now has",ehp,"health.") 
     print("You now have",mana,"mana.") 
elif "2" in attack: 
    if mana >= skill2[2]: 
     print("You hit with",skill2[0]) 
     ehp -= skill2[1] 
     mana -= skill2[2] 
     print("The",enam,"loses",skill2[1],"damage! It now has",ehp,"health.") 
     print("You now have",mana,"mana.") 
elif "3" in attack: 
    if mana >= skill3[2]: 
     print("You hit with",skill3[0]) 
     ehp -= skill3[1] 
     mana -= skill3[2] 
     print("The",enam,"loses",skill3[1],"damage! It now has",ehp,"health.") 
     print("You now have",mana,"mana.") 
    else: 
     print("You typed something wrong.") 

после этого, если вы не определили атаки, вы получите другую ошибку:

NameError: name 'attack' is not defined

если атака является строка не переменная , вы должны заменить его на «атаку» (добавить цитаты)

Как @Padraic Cunningham сказал в комментарии , атака - это переменная, очевидно! поэтому вы должны определить его. :)

+0

как точно можно было когда-либо быть в атаке «? –

+0

@PadraicCunningham Это не могло! :) и поэтому python не запускает код, который находится в его блоке! Я снова проверил! Он не запускает какой-либо блок! : D – Jean

+0

, тогда код никогда не запустится, я думаю, что можно предположить, что атака - это переменная;) –

Смежные вопросы