打破for语句循环

2024-05-14 08:00:16 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么此代码的输出是:

绘制
A赢
A赢
错误

而不是

绘制
A赢
错误
错误

就像它应该的那样

为什么break不起作用,并且对于strB中不允许字母“t”的字符串不给出result='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'))

Tags: andinlenif错误errorresultwin
1条回答
网友
1楼 · 发布于 2024-05-14 08:00:16

只断开电流回路。您要做的不是中断,而是直接返回错误

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

相关问题 更多 >

    热门问题