python函数随机循环if语句

标签 python function loops

我正在制作剪刀石头布游戏,遇到了 decisioncycle() 问题。我想要做的是要求用户在 usercycle() 中输入一个选择,让计算机在 gamecycle() 中生成一个随机选择,然后确定谁赢了回合并通过输赢计数跟踪每个结果。它似乎在决定何时随机工作。

import random


class rpsgame:

    rps= ["rock", "paper","scissors"]


    wincount=0
    losecount=0
    def usercycle(self):
        userchoice = input("rock, paper, scissor.....")
        print("SHOOT")
        return userchoice

    def gamecycle(self):
        computerchoice = random.choice(rpsgame.rps)
        return computerchoice




    def decisioncycle(self):
            if rpsgame.usercycle(self) == rpsgame.rps[0] and rpsgame.gamecycle(self) == rpsgame.rps[1]:
                    print("paper beats rock, you lose!")
                    rpsgame.losecount +=1
            elif rpsgame.usercycle(self) == rpsgame.rps[1] and rpsgame.gamecycle(self) == rpsgame.rps[0]:
                    print("paper beats rock, you win!")
                    rpsgame.wincount+=1
            elif rpsgame.usercycle(self) == rpsgame.rps[0] and rpsgame.gamecycle(self) == rpsgame.rps[2]:
                    print("rock beats scissors, you win!")
                    rpsgame.wincount+=1
            elif rpsgame.usercycle(self) == rpsgame.rps[2] and rpsgame.gamecycle(self) == rpsgame.rps[0]:
                    print("rock beats scissors, you lose!")
                    rpsgame.losecount+=1
            elif rpsgame.usercycle(self) == rpsgame.rps[1] and rpsgame.gamecycle(self) == rpsgame.rps[2]:
                    print("scissors beats paper, you lose!")
                    rpsgame.losecount+=1
            elif rpsgame.usercycle(self) == rpsgame.rps[2] and rpsgame.gamecycle(self) == rpsgame.rps[1]:
                    print("scissors beats paper, you win!")
                    rpsgame.wincount+=1
            elif rpsgame.usercycle(self) == rpsgame.gamecycle(self):
                    print("it's a tie!!!")
            print("wins {}, losses {}".format(rpsgame.wincount, rpsgame.losecount))




while True:
    rg = rpsgame()
    rg.usercycle()
    rg.gamecycle()
    rg.decisioncycle()

我认为我的问题出在 decisioncycle() 中。这是我在类里面的第一次尝试,因为游戏使用的是全局变量,但我在这里读到,这是对 future 进行的一种不好的做法。

最佳答案

您可以使用模块化算法,而不是使用大量循环来评估每个组合。

假设您制作 map

"rock" => 0
"paper"=>1
"scissors" => 2

您可以将解决方案评估为

(A.number - B.number) % 3

如果这个结果为0则平局,如果为1则A赢2则A输

关于python函数随机循环if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733239/

相关文章:

arrays - 数组上的 Uniq,显示不正确

python - 为什么不为实例属性调用 __get__ 方法?

python - 丢弃被测程序的标准输出/标准错误,但保留单元测试输出

python - 获取 Gitlab 的持续集成来编译用 C 编写的 Python 扩展

javascript - 立即调用函数表达式而不使用分组运算符

python - (代码)OpenERP v7中product.product中的id是什么?

javascript - 为什么这个动画功能不起作用?

python - 使用计数器将 Python for 循环转换为 while 循环

java - 无法让数组更改为正确的大小

python - 如何按索引顺序拆分 pandas.DataFrame?