我正在嘗試撰寫使用python計算最終分數的代碼。我使用的初始代碼是:
initial_score = 50
result = ['T','F','T','T','T','F']
final_score = initial_score
for i in (result):
if i == 'T':
final_score = 10
else:
final_score = -5
print(final_score)
結果是:
80
現在,如果串列中的結果是連續的,我想讓分數/罰分增加。如果結果連續為真 (T),則添加到 initial_point 的點將在每個結果后增加(10、20、30 等)。例子:
initial_score = 50
result = ['T','T','T','T','T']
因此,串列中每個值的[10,20,30,40,50]得分將為 200,最終得分為 200。對于 False (F) 也是如此,除了懲罰將是(-5、-10、-15 等)。我也想做出限制,如果連續結果結束,它將從最新的得分/點球開始。例子:
initial_score = 10
result = ['T','T','F','F','T','T','F','F','F','F','T','T','T']
串列中的值為[10,20,-5,-10,20,30,-10,-15,-20,-25,30,40,50]125,最終得分為 125。
我該怎么做?
uj5u.com熱心網友回復:
跟蹤獎勵和懲罰,在每個正確/錯誤答案上更新它,如果它與之前的答案相同。
def score(initial, result):
total = initial
award = 10
penalty = 5
for i, prev in zip(result, [None] result):
if i == 'T':
if i == prev:
award = 10
total = award
else:
if i == prev:
penalty = 5
total -= penalty
return total
>>> score(50, ['T','T','T','T','T'])
200
>>> score(10, ['T','T','F','F','T','T','F','F','F','F','T','T','T'])
125
uj5u.com熱心網友回復:
您可以使用itertools.groupby()一點數學來計算每個真/假條紋的點值:
from itertools import groupby
t_score = 10
t_increment = 10
f_score = -5
f_increment = -5
total_score = initial_score
for key, items in groupby(result):
length = sum(1 for item in items)
if key == 'T':
total_score = t_score * length (length * (length - 1)) // 2 * t_increment
t_score = t_increment * (length - 1)
else:
total_score = f_score * length (length * (length - 1)) // 2 * f_increment
f_score = f_increment * (length - 1)
print(total_score)
這輸出:
125
uj5u.com熱心網友回復:
使用字典跟蹤積分、獎勵和懲罰。并回圈遍歷您的result串列以達到最終得分。
initial_score = 10
result = ['T','T','F','F','T','T','F','F','F','F','T','T','T']
point_dict = {'T':10, 'F':-5}
increment_dict = {'T':10, 'F':-5}
cycle_num = 0
for i in range(len(result)):
if not cycle_num:
initial_score = point_dict[result[i]]
else:
if result[i] == result[i-1]:
point_dict[result[i]] = increment_dict[result[i]]
initial_score = point_dict[result[i]]
else:
initial_score = point_dict[result[i]]
cycle_num = 1
print(point_dict)
print(initial_score)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/461544.html
上一篇:計算值在串列中連續遇到2次的次數
