变量不可区分

时间:2019-01-30 13:02:06

标签: python python-3.x

所以,我正在尝试制作这种小型的R,P,S模拟器,为每个玩家指定一个特定的选项,在这种情况下:Rock,Paper或Scissors。在我的第一个版本中,我不得不手动编写剧本。在我的第二篇文章中,值是随机选择的,在游戏中保留了“乐趣”。然后我希望将这些值打印在结果之前,但现在所有结果都是联系。 我有点想像这是因为播放器1和播放器2在技术上具有相同的值,但是我该如何解决呢?

import sys
import random

options=["Rock", "Paper", "Scissors"]
player1 = print(random.choice(options))
player2 = print(random.choice(options))

def compare (p1,p2):
    if p1==p2:
        print("Tie!")
    elif p1=="Rock":
        if p2=="Scissors":
            return ("Rock wins!")
        else:
            return ("Paper wins!")
    elif p1=="Scissors":
        if p2=="Rock":
            return ("Rock wins!")
        else:
            return ("Scissors wins!")
    elif p1=="Paper":
        if p2=="Scissors":
            return ("Scissors wins!")
        else:
            return ("Paper wins!")
    else:
        return ("Invalid imput!")
    sys.exit()

print(compare (player1, player2))

2 个答案:

答案 0 :(得分:1)

print返回None,因此这样做

player1 = print(random.choice(options))
player2 = print(random.choice(options))

player1player2均为None,因此

if p1==p2:
    print("Tie!")

将始终被执行。

相反,使用

player1 = random.choice(options)
player2 = random.choice(options)

答案 1 :(得分:0)

我认为问题已得到解答,但我仍然建议对该功能进行一些优化:

代替:

def compare (p1,p2):
    if p1==p2:
        print("Tie!")

使用此:

def compare (p1,p2):
    if p1==p2:
        return("Tie!")

使代码更加独立,并优化执行。