[Python]石头剪刀布,是一种猜拳游戏,规则:石头>剪刀>布>石头,alice和bom想通过编程的方式来判断比赛结果,请编程模拟这个过程。并输出游戏结果。输入格式:第一行是一个整数n,......

石头剪刀布

石头剪刀布,是一种猜拳游戏,规则:石头>剪刀>布>石头,alice和bom想通过编程的方式来判断比赛结果,请编程模拟这个过程。并输出游戏结果。

输入格式:

第一行是一个整数n,表示一共进行n次游戏。1<=n<=100。
接下来是n行数据,每行包括两个字符,用空格分开,分别表示alice和bom的出拳内容,S表示石头,J表示剪刀,B表示布。

输出格式:

先输出n行,分别输出每局获胜方的名字,如果平局输出“平”
再输出一行最终的比分alice在前,bom在后,中间用冒号隔开
最后输出获胜方的名字,如果平局输出“平”

输入样例:

3
S J
B B
B J

输出样例:

alice
平
bom
1:1
平

代码如下:

[Python3]解法一:

n = int(input())  # 游戏次数
alice_score = 0  # alice得分
bom_score = 0  # bom得分

for _ in range(n):
    alice, bom = input().split()  # 获取alice和bom的出拳内容

    if (alice == 'S' and bom == 'J') or (alice == 'J' and bom == 'B') or (alice == 'B' and bom == 'S'):
        # alice获胜
        alice_score += 1
        print("alice")
    elif alice == bom:
        # 平局
        print("平")
    else:
        # bom获胜
        bom_score += 1
        print("bom")

print(f"{alice_score}:{bom_score}")  # 输出比分

if alice_score > bom_score:
    print("alice")
elif alice_score < bom_score:
    print("bom")
else:
    print("平")

解法二(使用函数):

def judge(a, b):
    if a == b:
        return '平'
    elif (a == 'S' and b == 'J') or (a == 'J' and b == 'B') or (a == 'B' and b == 'S'):
        return 'alice'
    else:
        return 'bom'


n = int(input())
alice_score = 0
bom_score = 0
results = []
for _ in range(n):
    a, b = input().split()
    winner = judge(a, b)
    results.append(winner)
    if winner == 'alice':
        alice_score += 1
    elif winner == 'bom':
        bom_score += 1

for result in results:
    print(result)

print(f"{alice_score}:{bom_score}")

if alice_score > bom_score:
    print("alice")
elif alice_score < bom_score:
    print("bom")
else:
    print("平")

解法三:

n = int(input())
score = [0, 0]

for i in range(n):
    alice, bom = input().split()

    if alice == bom:
        print("平")
    elif (alice == 'S' and bom == 'J') or (alice == 'J' and bom == 'B') or (alice == 'B' and bom == 'S'):
        print("alice")
        score[0] += 1
    else:
        print("bom")
        score[1] += 1

print(f"{score[0]}:{score[1]}", end=' ')

if score[0] > score[1]:
    print("alice")
elif score[0] < score[1]:
    print("bom")
else:
    print("平")

在这个代码中,我们首先通过input()函数获取游戏的次数n,然后初始化一个长度为2的列表score来表示alice和bom的得分,初始得分都为0。

接下来,我们使用一个循环来模拟n次游戏的过程。每次游戏中,我们通过input().split()获取alice和bom的出拳选择。然后根据游戏规则判断胜负,如果alice胜利,则alice的得分加1,如果bom胜利,则bom的得分加1,如果平局则不改变得分。

在循环结束后,我们通过print语句输出每轮的结果,然后输出最终的比分。最后根据得分判断最终的获胜者,得分高的获胜,如果得分相同则为平局。

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