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)
以下不符合您的想法:
(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'
.