[プログラマー]Lv1[第1ラウンド]ダーツゲーム


プログラマ
Lv.1[第1ラウンド]ダーツゲーム
1.質問input文字列output該当文字列に基づいて数値/2倍の等号を計算して返します.
2.解答
while文で文字列を巡りif文で条件をチェック
isdigit()、int()、index slicing、**を利用
3.コード
def solution(dartResult):
    answer = []
    i = 0
    while i < len(dartResult):
        if dartResult[i].isdigit():
            if dartResult[i+1].isdigit() == False:
                if dartResult[i+1] == "S":
                    answer.append(int(dartResult[i]))
                    i += 1
                elif dartResult[i+1] == "D":
                    answer.append(int(dartResult[i])**2)
                    i += 1
                else:
                    answer.append(int(dartResult[i])**3)
                    i += 1
            else:
                if dartResult[i+2] == "S":
                    answer.append(int(dartResult[i:i+2]))
                    i += 2
                elif dartResult[i+2] == "D":
                    answer.append(int(dartResult[i:i+2])**2)
                    i += 2
                else:
                    answer.append(int(dartResult[i:i+2])**3)
                    i += 2
        elif dartResult[i] == "*":
            if len(answer) == 1:
                answer[0] = answer[0]*2
            else:
                answer[-2] = answer[-2]*2
                answer[-1] = answer[-1]*2
        else:
            if len(answer) == 1:
                answer[0] = -answer[0]
            else:
                answer[-1] = -answer[-1]
        i += 1
    return sum(answer)