1102:练7.4 石头剪子布

问题遇到的现象和发生背景

1102:练7.4 石头剪子布

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 354 通过数: 204
【题目描述】
石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。

游戏规则:石头打剪刀,布包石头,剪刀剪布。

现在,需要你写一个程序来判断石头剪子布游戏的结果。

【输入】
第一行是一个整数N,表示一共进行了N(1 ≤ N ≤ 100)次游戏。

接下来N行的每一行包括两个字符串,表示游戏参与者Player1,Player2的选择(石头、剪子或者是布):

S1 S2

字符串之间以空格隔开S1,S2只可能取值在{"Rock", "Scissors", "Paper"}(大小写敏感)中。

【输出】
输出包括N行,每一行对应一个胜利者(Player1或者Player2),或者游戏出现平局,则输出Tie。

【输入样例】
3
Rock Scissors
Paper Paper
Rock Paper
【输出样例】
Player1
Tie
Player2

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

class Solution:
    def __init__(self) -> None:
        self.choice = {"Rock", "Scissors", "Paper"}

    def Game(self, N: int) -> None:
        """
        :param N:
        :return:
        """

        def decision(way1: str, way2: str) -> str:
            """
            :param way1:
            :param way2:
            :return:
            """
            if way1 == "Rock":
                if way2 == "Rock":
                    return "Tie"
                elif way2 == "Scissors":
                    return "Player1"
                else:
                    return "Player2"
            elif way1 == "Scissors":
                if way2 == "Scissors":
                    return "Tie"
                elif way2 == "Rock":
                    return "Player2"
                else:
                    return "Player1"
            else:
                if way2 == "Paper":
                    return "Tie"
                elif way2 == "Scissors":
                    return "Player2"
                else:
                    return "Player1"

        arr = []
        for i in range(N):
            choices = input()
            choices1, choices2 = choices.split(' ')
            if choices1 not in self.choice:
                print("Input Error, Enter Again")
                i -= 1
                continue
            if choices2 not in self.choice:
                print("Input Error, Enter Again")
                i -= 1
                continue
            arr.append(decision(way1=choices1, way2=choices2))
        for i in arr:
            print(i)


if __name__ == '__main__':
    U = Solution()
    num = int(input())
    U.Game(num)

img

给个例子:

select = ["Rock", "Scissors", "Paper"]
N = int(input())
inputs = []
while len(inputs)<N:
    selects = input().strip().split()
    if len(selects)==2 and selects[0] in select and selects[1] in select:
        inputs.append([select.index(selects[0]),select.index(selects[1])])
    else:
        print('输入格式错误,请重新输入!')
for i in inputs:
    if i[0]-i[1]==0:
        print('Tie')
    elif i[0]-i[1]==-1 or i[0]-i[1]==2:
        print('Player1')
    else:
        print('Player2')

img

def game(a,b):
    if a == b: return "Tie"
    if {a, b} == {'P','S'}:
        return "Player1" if a>b else "Player2"
    return "Player1" if a<b else "Player2"

N = int(input())
for _ in range(N):
    guess = input().split()
    print(game(guess[0][0],guess[1][0]))