赵恒卓


私信TA

用户名:dotcpp0727194

访问量:276

签 名:

等  级
排  名 6143
经  验 1460
参赛次数 3
文章发表 2
年  龄 99
在职情况 学生
学  校 阜阳师范大学
专  业 数据科学与大数据

  自我简介:

TA的其他文章

递归解法~~~~~~~~
浏览:110

解题思路:

1、本题如何用数字表达石头剪刀布之间的获胜规则:如石头对剪刀 石头胜,剪刀对布 剪刀胜,布对石头 布获胜。(本题采用数值小的一方获胜)
2、如何运用循环将出拳的规律表达出来。

3、石头对布的取胜规则不符合(1、....)中的想法,所以采用if语句对此情况设立特殊的取胜规则。
注意事项:
1、(l += 1) 和 (h += 1) 不能放在之后的if语句的后面,不然将无法进行正确的循环。
参考代码:

n, a_cycle, b_cycle = map(int, input().split())        #用将猜拳次数和A、B的猜拳周期读入
a_law = [int(i) for i in input().split()]              #将A的猜拳规律读入
b_law = [int(i) for i in input().split()]              #将B的猜拳规律读入
A, B, l, h = 0, 0, 0, 0                                #用A、B记录获胜的次数,用l、h记录A、B的猜拳次数
for i in range(n):                                     #进行n次循环
    if a_law[l] == b_law[h]:                           #当A、B数值一样,A、B数值不变
        A = A
        B = B
    elif a_law[l] < b_law[h]:                          #当A<B时,有两种情况
        if a_law[l] == 0 and b_law[h] == 5:            #1、当A出拳,B出布时,B获胜
            B += 1
        else:                                          #2、其他情况,A获胜
            A += 1
    else:                                              #当B<A时,有两种情况
        if a_law[l] == 5 and b_law[h] == 0:            #与上述同理
            A += 1
        else:
            B += 1
    l += 1                                             #每循环一遍增加一次猜拳的次数
    h += 1
    if l > a_cycle-1:                                  #当猜拳的次数超过猜拳周期,令l=0,重新按照猜拳规律出拳
        l = 0
    if h > b_cycle-1:                                  #与上述同理
        h = 0
if A > B:                                              #最后进行比较,输出胜者
    print('A')
elif B > A:
    print('B')
else:
    print("draw")



 

0.0分

1 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

当初才学python写的,现在看确实写的太复杂了。
2024-04-02 22:34:38
#2、其他情况,A获胜
为什么呀,如果都是剪刀的话平局呀,或者a是剪刀,b是石头,b就赢啊,这怎么对的呀
2024-03-29 11:39:10
  • «
  • 1
  • »