【问题标题】:break the for statement loop打破 for 语句循环
【发布时间】:2018-01-15 15:36:08
【问题描述】:

为什么这段代码的输出是:

绘制
胜利
胜利
错误

而不是

绘制
胜利
错误
错误

应该是这样的?

为什么 break 不起作用并且对于 strB 中不允许的字母“T”的字符串不给出结果 = 'ERROR'? (strB = 'SRTR')

def RockPaperScissors(strA,strB):
    A_win = 0
    B_win = 0
    allowed_letters = 'SRP'

    if (len(strA) != len(strB)):
        result = 'ERROR'

    elif (len(strA) == len(strB)):

        for char in strA:
            for c in strB:
                if char not in allowed_letters:
                    result = 'ERROR'
                    break
                elif c not in allowed_letters:
                    result = 'ERROR'
                    break

        for i in range(0,len(strA)):
            if (strA[i] == 'R' and strB[i] == 'S'):
                a_win = 1
                A_win += a_win
            if (strA[i] == 'S' and strB[i] == 'P'):
                a_win = 1
                A_win += a_win
            if (strA[i] == 'P' and strB[i] == 'R'):
                a_win = 1
                A_win += a_win
            if (strB[i] == 'R' and strA[i] == 'S'):
                b_win = 1
                B_win += b_win
            if (strB[i] == 'S' and strA[i] == 'P'):
                b_win = 1
                B_win += b_win
            if (strB[i] == 'P' and strA[i] == 'R'):
                b_win = 1
                B_win += b_win   

        if A_win > B_win:
            result = 'A WINS'
        if B_win > A_win:
            result = 'B WINS'
        if A_win == B_win:
            result = 'DRAW'

    return result

print(RockPaperScissors('RP','PR'))
print(RockPaperScissors('PPP','RRR'))
print(RockPaperScissors('RPSR','SRTR'))
print(RockPaperScissors('RPS','RPSRP'))

【问题讨论】:

  • 你应该修正你的缩进。此代码不会运行。
  • 请重新缩进您的代码。或者更好:复制您的原始代码,将其粘贴到此处(替换您当前的尝试),然后选择所有粘贴的代码并使用工具栏上的{} 按钮让编辑器处理缩进。

标签: python for-loop if-statement break


【解决方案1】:

Break 只中断当前循环。您要做的不是中断而是直接返回有错误。

for char in strA:
    for c in strB:
        if char not in allowed_letters:
            return 'ERROR'
        elif c not in allowed_letters:
            return 'ERROR'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2020-06-18
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    相关资源
    最近更新 更多