Python实现洛谷题目P1042

大家好,我是big_one,一名在读大一IT生,这是我的第一篇博客,这将是我博客的开始,我将会这里发表我的每一次学习成果,记录3年的成长!

今天给大家分享一下洛谷中题目P1042,那么先上原题:

**题目背景:
国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中111111分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白111111分制和212121分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。
华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在111111分制和212121分制下,双方的比赛结果(截至记录末尾)。

比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):

WWWWWWWWWWWWWWWWWWWWWWLW

在111111分制下,此时比赛的结果是华华第一局111111比000获胜,第二局111111比000获胜,正在进行第三局,当前比分111比111。而在212121分制下,此时比赛结果是华华第一局212121比000获胜,正在进行第二局,比分222比111。如果一局比赛刚开始,则此时比分为000比000。直到分差大于或者等于222,才一局结束。

你的程序就是要对于一系列比赛信息的输入(WLWLWL形式),输出正确的结果。**

这种题目可能使用C或者java语言会难些,其实与python语言的编程思路并无区别。
那么献上我的代码。

# https://www.luogu.com.cn/problem/P1042


Hua_score = 0
Hua_opponent = 0
#定义两个函数来分别计算
def eleven(game_number):
    global Hua_opponent
    global Hua_score
    global Win_num
    global Win_num1
    for i in range(len(game_number)):
        if game_number[i] == 'W':
            Hua_score += 1

            # 记录华华获胜场数
            while Hua_score == 11:
                print("%d:%d"%(11,Hua_opponent))
                Hua_score = 0
                Hua_opponent = 0

                break
        elif game_number[i] == 'E':
            print("%d:%d" % (Hua_score, Hua_opponent))
        elif game_number[i] == 'L':
            Hua_opponent += 1

            while Hua_opponent == 11 :

                print("%d:%d" % (Hua_score, 11))
                Hua_score = 0
                Hua_opponent = 0
                break

Hua_score21 = 0
Hua_opponent21 = 0


def twenty_one(game_number):
    global Hua_opponent21
    global Hua_score21
    global Win_num121
    global Win_num21
    for i in range(len(game_number)):
        if game_number[i] == 'W':
            Hua_score21 += 1
            # 记录华华获胜场数
            while Hua_score21 == 21:

                print("%d:%d"%(21,Hua_opponent21))
                Hua_score21 = 0
                Hua_opponent21 = 0
                break
        elif game_number[i] == 'E':
            print("%d:%d" % (Hua_score21, Hua_opponent21))
        elif game_number[i] == 'L':
            Hua_opponent21 += 1
            while Hua_opponent21 == 21 :

                print("%d:%d" % (Hua_score21, 21))
                Hua_score21 = 0
                Hua_opponent21 = 0
                break

def main():
    record_list = list()
    record_need = list()
    boolean = True
    while boolean:
        record = input()
        record_list.append(record)
        for i in range(len(record)):
            if record[i] == 'E':
                boolean = False
            else:
                boolean = True
    for i in range(len(record_list)):
        a = list(record_list[i])
        # 将record_List中没一行的数据以列表形式存放
        for j in range(len(a)):
            record_need.append(a[j])

    eleven(record_need)
    twenty_one(record_need)


if __name__ == '__main__':
    main()

这里许多细节可能我没有在看的各位大神做的好,如果有代码和学识上的错误,欢迎指出错误,谢谢!!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值