我的Python程序中的逻辑错误?

Dan*_*den 0 python boolean-logic if-statement boolean-expression

我正在尝试编写一个简单的程序,它将模拟一些石头剪刀游戏,并根据用户投入的模拟数量返回每个项目的胜利数量.但是,它仅打印出已经发生的绘制数量,并且打印出岩石,纸张和剪刀类别的绘制数量.我觉得这与我的逻辑有关,但是在最后20分钟内无法弄明白.此外,如果您发现任何格式问题或我可以做得更好的事情,请随时告诉我.这也不是家庭作业,只是一个小练习计划.多谢你们!

#Simulates games of rock paper scissors and tracks them
from random import randint


class tracker:
    def __init__(self, games):  
        self.wins = {'rock': 0, 'paper': 0, 'scissors': 0, 'draw':0 }
        self.games = games  

    def runSim(self):
        def __init__(self):
            pass

        for game in range(0, self.games):
            keys = ['rock', 'paper', 'scissors'] 
            opp1 = keys[randint(0, 2)]
            opp2 = keys[randint(0, 2)]


            if (opp1 == opp2):
                self.wins['draw'] = self.wins['draw'] + 1
            elif ((opp1 or opp2) == 'rock') and ((opp1 or opp2) == 'scissors'):
                self.wins['rock'] = self.wins['rock'] + 1
            elif ((opp1 or opp2) == 'paper' and (opp1 or opp2) == 'scissors'):
                self.wins['scissors'] = self.wins['scissors'] + 1
            elif ((opp1 or opp2) == 'paper' and (opp1 or opp2) == 'rock'):
                self.wins['paper'] = self.wins['paper'] + 1

        print 'draws: ', self.wins['draw']
        print 'rocks: ', self.wins['rock']
        print 'papers: ', self.wins['paper']
        print 'scissors: ', self.wins['scissors']
        print keys


while True:
    print 'enter number of games: '
    games = raw_input()
    games = int(games)  
    tracker = tracker(games)
    tracker.runSim()
Run Code Online (Sandbox Code Playgroud)

Sim*_*ser 5

以下不符合您的想法:

(opp1 or opp2) == 'rock'
Run Code Online (Sandbox Code Playgroud)

您将要编写以下内容:

(opp1 == 'rock' or opp2 == 'rock')
Run Code Online (Sandbox Code Playgroud)

(opp1 or opp2) == 'rock'是什么:

  • 评估(opp1 or opp2)和比较'rock'.

鉴于opp1并且opp2都是非空字符串,表达式(opp1 or opp2)将评估为True.所以你基本上是在比较True == 'rock'.

  • 或者,在(opp1,opp2)`等中"摇滚". (2认同)