2013-09-26 59 views
-4

我希望if语句打破,如果条件得到满足,因为目前如果它没有早破,然后我在我的代码中发生一些意外。蟒蛇打破如果语句里面的循环

问题是,我不知道在哪里放置休息。当我把它放在这里显示的地方时,我得到了“意外缩进”,但是当我把它放回一个级别时,我发现else语句中出现错误,表示“Invalid Syntax”。

编辑:如果被感染。它只是没有出现在网站代码块中。我会尝试在网站上修复它。

@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

如果在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

如果是缩进的,我不确定它为什么会在网站上的代码块中显示出来。没事儿。当我得到错误时,它是休息时间。并感谢您清理我的逻辑错误。 编辑:此外,没有whitespacing,一切都是标签,因为它应该是。 – user2817954

+0

@ user2817954。我懂了。我相应地编辑了我的答案。 – 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