为什么分数显示不正确?
Why isn't the score showing correctly?
我还是python的初学者,所以我决定做一个石头游戏。
出于某种原因,当用户或计算机获胜时,直到下一轮才给他们一个分数。
import random
games = int(input("")) #how many games
usersc = 0
compsc = 0
for x in range(games):
score = (str(usersc) + "-" + str(compsc))
user = input("") #ROCK, PAPER, SCISSORS
comp = random.randint(0,2)
if user == 'ROCK':
if comp == 0:
print("tie " + score)
elif comp == 1:
compsc += 1
print("loss " + score)
else:
usersc += 1
print("win " + score)
elif user == 'PAPER':
if comp == 0:
usersc += 1
print("win " + score)
elif comp == 1:
print("tie " + score)
else:
compsc += 1
print("loss " + score)
elif user == 'SCISSORS':
if comp == 0:
compsc += 1
print("loss " + score)
elif comp == 1:
usersc += 1
print("win " + score)
else:
print("tie " + score)
else:
print("try again")
if compsc > usersc:
print("loss")
elif usersc > compsc:
print("win")
else:
print("tie")
例如,当计算机赢了,它应该说输了 0-1 却说输了 0-0,但是下一轮它会说输了 0-1。
任何帮助将不胜感激。
当您正在打印 loss+score
或 win+score
,
首先将分数更新为score = (str(usersc) + "-" + str(compsc))
,然后打印它。
问题是你在增加分数之前将分数存储在变量中,所以你总是落后 1 场比赛。确保分数始终正确的最简单方法是创建一个函数来获得这样的分数...
def get_score():
return str(usersc) + "-" + str(compsc)
这将确保始终使用最新的用户和竞争分数值。
使用此代码变为...
import random
games = int(input("")) #how many games
usersc = 0
compsc = 0
def get_score():
return str(usersc) + "-" + str(compsc)
for x in range(games):
user = input("") #ROCK, PAPER, SCISSORS
comp = random.randint(0,2)
if user == 'ROCK':
if comp == 0:
print("tie " + get_score())
elif comp == 1:
compsc += 1
print("loss " + get_score())
else:
usersc += 1
print("win " + get_score())
elif user == 'PAPER':
if comp == 0:
usersc += 1
print("win " + get_score())
elif comp == 1:
print("tie " + get_score())
else:
compsc += 1
print("loss " + get_score())
elif user == 'SCISSORS':
if comp == 0:
compsc += 1
print("loss " + get_score())
elif comp == 1:
usersc += 1
print("win " + get_score())
else:
print("tie " + get_score())
else:
print("try again")
if compsc > usersc:
print("loss")
elif usersc > compsc:
print("win")
else:
print("tie")
我还是python的初学者,所以我决定做一个石头游戏。 出于某种原因,当用户或计算机获胜时,直到下一轮才给他们一个分数。
import random
games = int(input("")) #how many games
usersc = 0
compsc = 0
for x in range(games):
score = (str(usersc) + "-" + str(compsc))
user = input("") #ROCK, PAPER, SCISSORS
comp = random.randint(0,2)
if user == 'ROCK':
if comp == 0:
print("tie " + score)
elif comp == 1:
compsc += 1
print("loss " + score)
else:
usersc += 1
print("win " + score)
elif user == 'PAPER':
if comp == 0:
usersc += 1
print("win " + score)
elif comp == 1:
print("tie " + score)
else:
compsc += 1
print("loss " + score)
elif user == 'SCISSORS':
if comp == 0:
compsc += 1
print("loss " + score)
elif comp == 1:
usersc += 1
print("win " + score)
else:
print("tie " + score)
else:
print("try again")
if compsc > usersc:
print("loss")
elif usersc > compsc:
print("win")
else:
print("tie")
例如,当计算机赢了,它应该说输了 0-1 却说输了 0-0,但是下一轮它会说输了 0-1。 任何帮助将不胜感激。
当您正在打印 loss+score
或 win+score
,
首先将分数更新为score = (str(usersc) + "-" + str(compsc))
,然后打印它。
问题是你在增加分数之前将分数存储在变量中,所以你总是落后 1 场比赛。确保分数始终正确的最简单方法是创建一个函数来获得这样的分数...
def get_score():
return str(usersc) + "-" + str(compsc)
这将确保始终使用最新的用户和竞争分数值。 使用此代码变为...
import random
games = int(input("")) #how many games
usersc = 0
compsc = 0
def get_score():
return str(usersc) + "-" + str(compsc)
for x in range(games):
user = input("") #ROCK, PAPER, SCISSORS
comp = random.randint(0,2)
if user == 'ROCK':
if comp == 0:
print("tie " + get_score())
elif comp == 1:
compsc += 1
print("loss " + get_score())
else:
usersc += 1
print("win " + get_score())
elif user == 'PAPER':
if comp == 0:
usersc += 1
print("win " + get_score())
elif comp == 1:
print("tie " + get_score())
else:
compsc += 1
print("loss " + get_score())
elif user == 'SCISSORS':
if comp == 0:
compsc += 1
print("loss " + get_score())
elif comp == 1:
usersc += 1
print("win " + get_score())
else:
print("tie " + get_score())
else:
print("try again")
if compsc > usersc:
print("loss")
elif usersc > compsc:
print("win")
else:
print("tie")