-1

我正在尝试用 Python 制作一个石头、纸、剪刀的游戏,我想我几乎拥有它,但我的代码并没有给我任何回报。我希望也许这里有人可以帮助我。我的代码一开始不会有任何问题,它会从用户那里获得输入,但是一旦用户将某些内容放入其中,它只会在幕后进行所有比较,并且不会返回声明。任何人都可以帮忙吗?(这也是我的计算机科学课的作业,所以我的老师很老套,希望我们用 Python、Ruby、Java 来运行它)

    def pythonRubyJava():
        Python=1
        Ruby=2
        Java=3
        mylist3=[1,2,3]
        cpu=random.choice(mylist3)
        player1=input("Python, Ruby, or Java? ")
        if (cpu == Python) and (player1 == Python):
            print("The computer chose Python and you chose Python")
            print("You tied.")
        elif (cpu == Python) and (player1 == Ruby):
            print("The computer chose Python and you chose Ruby")
            print("You lost.")
        elif (cpu == Python) and (player1 == Java):
            print("The computer chose Python and you chose Java")
            print("You won!")
       elif (cpu == Ruby) and (player1 == Ruby):
            print("The computer chose Ruby and you chose Ruby")
            print("You tied.")
       elif (cpu == Ruby) and (player1 == Python):
            print("The computer chose Ruby and you chose Python")
            print("You won!")
       elif (cpu == Ruby) and (player1 == Java):
            print("The computer chose Ruby and you chose Java")
            print("you lost.")
       elif (cpu == Java) and (player1 == Java):
            print("The computer chose Java and you chose Java")
            print("You tied.")
       elif (cpu == Java) and (player1 == Python):
            print("The computer chose Java and you chose Python")
            print("You lost.")
       elif (cpu == Java) and (player1 == Ruby):
            print("The computer chose Java and you chose Ruby")
            print("You won!")
       while (player1 == Python,Ruby,Java):
            print(pythonRubyJava())
4

3 回答 3

2

一方面,您的用户输入会返回一个字符串,即"Python""Ruby""Java"。进行比较时,您将字符串与整数进行比较,所以"Python" == Python永远不会是真的,因为"Python" != 1.

此外,您希望避免像那样从函数内部递归调用函数。将 while 循环放在具有不同真值条件的外部。在函数内部传输错误检查。

此外,如果您只是

  • 将用户和 CPU 选择保留为字符串
  • 测试if cpu.lower() == player1.strip().lower()
  • 如果是真的,print("Computer chose {} and you chose {}".format(cpu))用“你赢了!”
  • 如果为假,则用“你输了!”打印相同的内容。
于 2013-09-27T15:59:36.527 回答
0

1)将while循环移出函数。2)也许尝试为选择分配值并比较每个选择的“权重”,这样你就“不要重复自己”

类似的东西:

class Language:
    def __init__(self, name, weight, choice_number)
        self.name, self.weight, self.choice_number = name, weight, choice_number

available_choices = [Language('python, 3, 1'), Language('ruby', 2, 2),
                     Language('java', 1, 3)]

然后,您可以比较权重(按名称搜索)并打印正确的名称。此外,这是 Python 3,而不是 4

如果 PC 选择了 JAVA 而你选择了 Python,那么你就赢了!xD

于 2013-09-27T16:03:08.000 回答
0

由于这是一项编程任务,我不会指出确切的解决方案。但是,您似乎遗漏了一些缩进问题。

在定义函数 (def pythonRubyJava():) 之后,谁来运行它?函数的最后两行在函数定义内进行递归调用,在一段时间内。

简而言之,您没有看到任何返回,因为此时没有代码正在运行(函数已定义,是的,但从未调用过)。

于 2013-09-27T16:03:37.707 回答