【发布时间】: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