天天看點

Python每日一程式設計小練習(2019.06.04)——棒球比賽分數計算

題目:

你現在是棒球比賽記錄員。

給定一個字元串清單,每個字元串可以是以下四種類型之一:

1.

整數

(一輪的得分):直接表示您在本輪中獲得的積分數。

2. 

"+"

(一輪的得分):表示本輪獲得的得分是前兩輪

有效

 回合得分的總和。

3. 

"D"

(一輪的得分):表示本輪獲得的得分是前一輪

有效

 回合得分的兩倍。

4. 

"C"

(一個操作,這不是一個回合的分數):表示您獲得的最後一個

有效

 回合的分數是無效的,應該被移除。

每一輪的操作都是永久性的,可能會對前一輪和後一輪産生影響。

你需要傳回你在所有回合中得分的總和。

示例 1:

輸入: ["5","2","C","D","+"]
輸出: 30
解釋: 
第1輪:你可以得到5分。總和是:5。
第2輪:你可以得到2分。總和是:7。
操作1:第2輪的資料無效。總和是:5。
第3輪:你可以得到10分(第2輪的資料已被删除)。總數是:15。
第4輪:你可以得到5 + 10 = 15分。總數是:30。      

本題筆者思路:

1、先把C元素以及它的前一位元素删去;

2、更改其他元素的含義(包括轉為整型、更改為最本質的含義);

注:本題中,轉換數值字元串為數值型使用的方法是:int(a[i])。參考于:https://blog.csdn.net/jiedushi/article/details/7390292

def bangqiu(a):
    ######以下部分用于删除C元素以及C元素的前一個元素
    b = []
    for i in range(0,(len(a)-1)):
        if a[i+1] != 'C' and a[i] != 'C':       #隻保留本次位置以及下一次位置都不是C的元素
            b.append(a[i])
    if a[(len(a)-1)] != 'C':
        b.append(a[(len(a)-1)])                 #判斷原清單最後一個元素是不是C
    ######以下部分用于更改 D、+ 為它們的本質含義   
    d = b
    for i in range(0,len(b)):
        if b[i] == 'D':
            d[i] = 2*int(d[i-1])                #把D修改為前一個元素的兩倍
            continue
        if b[i] == '+':
            d[i] = int(d[i-1]) + int(d[i-2])    #把+修改為前兩個元素的求和
            continue
        d[i] = int(d[i])
    ######以下部分用于清單求和
    s = 0
    for i in range(0,len(d)):
        s = s + d[i]
    return(s)
           

運作結果:

Python每日一程式設計小練習(2019.06.04)——棒球比賽分數計算

注:本題目來源于:https://mp.weixin.qq.com/s/dwd85Q65P-Plvh2_7GOnyg

如有侵權,請聯系删除。

本題目結果為筆者自己思路并編寫代碼實作的,如有錯誤,歡迎指出,謝謝。