【问题标题】:python breaking if statement inside for looppython在for循环中打破if语句
【发布时间】:2013-09-26 04:59:16
【问题描述】:

如果满足条件,我希望 if 语句中断,因为目前如果它没有提前中断,那么我的代码会出现一些意外。

问题是,我不知道在哪里休息。当我把它放在此处显示的位置时,我得到“意外缩进”,但是当我把它放回一个级别时,我得到一个错误,else 语句说“无效语法”。

编辑:IF 是缩进的。它只是没有出现在站点代码块中。我会尝试在网站上修复它。

@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"

【问题讨论】:

  • 紧跟在def 后面的那一行应该有一个缩进。
  • 你的 if after def 不是有意的
  • 您的实际代码在第一行之后有缩进吗?因为它应该..
  • 你的代码结构很奇怪。你为什么要score = score 等等?
  • 您的breakif 下没有缩进。

标签: python if-statement for-loop break


【解决方案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        

【讨论】:

    【解决方案2】:

    试试这个:

    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.
    

    如果这不起作用,另一件需要考虑的事情是,当您缩进代码的前导空格时,您可能无意中混合了制表符和空格。如果是这样,请将所有制表符转换为空格。

    并且,关于引用的注释。也许您打算返回这些值?如果是这样,您需要修复这些逻辑错误。

    更新:

    如果你只需要中断一次并且只需要一次,那么你应该用return替换break。

    如果没有,那么您应该捕获该位置,继续循环执行,然后对这些信息做任何您需要做的事情。

        #...
        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"
                #...
    

    【讨论】:

    • 如果是缩进的,我不确定为什么它会在网站的代码块中以这种方式显示。那也行。当我得到错误时,它的休息。并感谢您清除我的逻辑错误。编辑:此外,没有空格,所有内容都按应有的方式标记。
    猜你喜欢
    • 1970-01-01
    • 2021-03-25
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多