2013-09-26 4 views
-4

Я хочу, чтобы if-statement прерывался, если условие выполнено, потому что в настоящее время, если оно не сломано раньше, я получаю некоторые неудачи в моем коде.python break if statement in for loop

Проблема в том, что я не уверен, где поставить перерыв. Когда я помещаю его туда, где показано здесь, я получаю «Неожиданный отступ», но когда я вернул его на уровень, я получаю сообщение об ошибке с инструкцией else, в которой говорится «Недопустимый синтаксис».

РЕДАКТИРОВАТЬ: ЕСЛИ ПОКАЗАНО. Он просто не отображался в блоках кода сайтов. Я попытаюсь исправить это на сайте.

@duck, как вы думаете, я пытаюсь это сделать? Я нахожусь в первые недели курса python. Я приехал сюда, чтобы помочь себе, а не получить мой код, прокрученный вами. Если вы можете мне помочь, я был бы признателен за помощь, иначе мне не нужно, чтобы вы рассказывали «научиться кодировать», когда это именно то, что я пытаюсь сделать.

Так что я не уверен, что делать. Любая помощь будет оценена по достоинству.

def pTurn(CampLoc, AICampLoc, score, yourHits, cHits): 
    if yourHits < 5: 
     hGuess = int(raw_input("Enter a co-ordinate to air-strike: ")) 
     print "Air-striking co-ordinate: %d" % hGuess 
     for cSpot in AICampLoc: 
      if hGuess == cSpot: 
       yConfirMsg = "Kill confirmed!!" 
       yourHits += 1 
       score += 100 
       AICampLoc.remove(hGuess) 
      break 
      else: 
       yConfirMsg= "No casualties" 
+1

Строка, следующая за вашей 'def', должна иметь отступ. – Rohit

+3

Ваш if после def не предназначен – duck

+2

У вашего фактического кода есть отступ после первой строки? Потому что это должно ... – Blorgbeard

ответ

0

Попробуйте это:

def pTurn(CampLoc, AICampLoc, score, yourHits, cHits): 
    if yourHits < 5: 
    #^This line ident is probably the offending line. ;) 
     hGuess = int(raw_input("Enter a co-ordinate to air-strike: ")) 
     print "Air-striking co-ordinate: %d" % hGuess 
     for cSpot in AICampLoc: 
      if hGuess == cSpot: 
       yConfirMsg = "Kill confirmed!!" 
       yourHits += 1 
       score += 100 
       AICampLoc.remove(hGuess) 
       break 
      else: 
       yConfirMsg= "No casualties" 
       score = score #You may want to fix this, since the logic doesn't make sense 
       yourHits = yourHits #Fix this line as well. This is variable value assignment to the same variable. 

Если это не работает, еще одна вещь, чтобы рассмотреть, что вы можете быть непреднамеренно смесительные вкладки и пробелы, когда вы отступа начальные пробелы для вашего кода. Если это так, преобразуйте все вкладки в пробелы.

И, касательно примечаний. Возможно, вы хотели вернуть эти ценности? Если это так, вам нужно исправить эти логические ошибки.

UPDATE:

Если у вас есть только сломать раз и только один раз, то вы должны заменить перерыв с return.

Если нет, то вы должны зафиксировать местоположение, продолжить выполнение цикла и делать все, что вы должны делать с этой информацией.

#... 
    values = {} 
    all_values = [] 

    for cSpot in AICampLoc: 
     if hGuess == cSpot: 
      yConfirMsg = "Kill confirmed!!" 
      yourHits += 1 
      score += 100 
      AICampLoc.remove(hGuess) 

      values['message'] = yConfirMsg 
      values['hits'] = yourHits 
      values['score'] = score 
      values['camploc'] = AICampLoc 

      all_values.append(values) 

     else: 
      yConfirMsg= "No casualties" 
      #... 
+0

Что если отступом, я не уверен, почему он так выглядит в блоках кода на сайте. Это нормально. Его разрыв, когда я получаю ошибки. И спасибо за прояснение моих логических ошибок. РЕДАКТИРОВАТЬ: Кроме того, нет пробелов, все накладывается так, как должно быть. – user2817954

+0

@ пользователь2817954. Понимаю. Я отредактировал свой ответ соответственно. – jrd1

1

Вы пропускаете отступа, как и другие государства ответа, но и у вас есть куча кода, который не нужен. Ваш код может быть упрощен до этого:

def pTurn(CampLoc, AICampLoc, score, yourHits, cHits): 
    if yourHits < 5: 
     hGuess = int(raw_input("Enter a co-ordinate to air-strike: ")) 
     print "Air-striking co-ordinate: %d" % hGuess 
     yConfirMsg= "No casualties" 
     for cSpot in AICampLoc: 
      if hGuess == cSpot: 
       yConfirMsg = "Kill confirmed!!" 
       yourHits += 1 
       score += 100 
       AICampLoc.remove(hGuess) 
       break