我分配了一个重构功能。我似乎不知道我还能在这里做什么,也许将一些变量提取到函数中?
def score(game):
result = 0
frame = 1
in_first_half = True
for i in range(len(game)):
if game[i] == '/':
result += 10 - last
else:
result += get_value(game[i])
if frame < 10 and get_value(game[i]) == 10:
if game[i] == '/':
result += get_value(game[i+1])
elif game[i] == 'X' or game[i] == 'x':
result += get_value(game[i+1])
if game[i+2] == '/':
result += 10 - get_value(game[i+1])
else:
result += get_value(game[i+2])
last = get_value(game[i])
if not in_first_half:
frame += 1
if in_first_half is True:
in_first_half = False
else:
in_first_half = True
if game[i] == 'X' or game[i] == 'x':
in_first_half = True
frame += 1
return result
答案 0 :(得分:1)
通常,类似这样的问题(关于可能需要改进的工作代码)更适合CodeReview。
但是也有一些错误/疣:
is
进行相等性测试。 ==
测试对象身份,尽管对于像is
这样的简单对象,它可以按预期工作,但不能保证在所有实现中都可以这样做。
True
到
if in_first_half is True:
in_first_half = False
else:
in_first_half = True
in_first_half = not in_first_half
应该是
if game[i] == 'X' or game[i] == 'x':
或
if game[i] in 'Xx':