Python保龄球计分Demo

找工作,笔试题,恶心到想吐,和大家分享下,在网上只有Java的demo,我这个python菜鸟,分享下python的demo......

需求:保龄球计分规则如下,写出一个计分的demo

一局有十格,每格有两次投球机会,如在第一次投球时没能全中,就有需要投第二球。每格可能出现的情况:
1、失球 在两次投后,未能击倒10个瓶,此格的分数为击倒的个数。如果一次击球未击到一个,则用一个“-”标记
2、补中 第二次补投后,击倒10个瓶,此格的分数为10加上下一次投的瓶数。
3、全中 一次性击倒10个,此格的分数为10加上下两次投的瓶数。
第十格特殊:
(1)、如果在第二次投球未补中,则分数为两次击倒的瓶数。
(2)、如果第二次补中,则加一次投球机会,分数为三次击到的瓶数
(3)、如果第一球全中,则加二次投球机会,分数为三次击倒的瓶数

分析如下:

输入规则:
1-9次
两次投掷未全中:直接记分数  如34  分数为3+4
第一次全中输入X 该局分数为10+后两次分数
第一未全中,第二次补中:3/  分数为10+后一次的分数
第10次
第一次全中:奖励两次
第一次未全中,第二次补中:再奖励一次
第一次,第二次 未全中:结束

出现情况:
1,1-9:未全中
2,10:未全中
3,1-9:一次全中/第二次补中
4,10:一次全中/第二次补中

情况1&2: 直接相加
情况3:全中  XXX XX43 X43 X4/   第二次补中:4/X 4/43 4/4/
情况4:XXX X43 X4/

Demo:

ten_score="11 11 11 11 11 11 11 11 11 11"
# ten_score="33 33 33 33 33 33 33 33 33 33"
# ten_score="X X X X X X X X X XXX"
# ten_score="X X 9/ 80 X X 90 8/ 7/ 44"
import re
def score_demo(ten_score):
    ten_score=ten_score.split()
    total_score=0
    for index,score in enumerate(ten_score,1):
        if not score.isdigit():
            if index < 10:
                score=(score+"".join(ten_score[index:]))[:3]  #当前局的分加上后边的分取前三个
            score=re.sub("\d/","X",score)
        total_score += sum(int(f) if f.isdigit() else 10 for f in score)
    print(total_score)

if __name__ == '__main__':
    score_demo(ten_score)

相比python的demo代码量确实很少,python还是很强大的

你可能感兴趣的:(python,开发语言)