嗨,我有以下问题-编写一个程序来玩以下简单的游戏。玩家以$ 100开始。在各个 转硬币被翻转,玩家不得不猜测正面还是反面。玩家每人赢得$ 9 正确的猜测,每次错误的猜测将损失$ 10。当玩家进入游戏时游戏结束 钱用完或达到200美元。
我的程序实际上正在运行。但是,当玩家分数降到零时,我的程序仍然运行,这不是我期望的。我需要知道是否可以在if语句中做某些事情,或者在我有很多条件的情况下是否有更简单的方法来做陈述。
import random
list=['heads','tails']
def game():
p1=100
p2=100
while (p1>0 or p2>0)and(p1<200 or p2<200):
x=random.choice(list)
x1=input('digit your guess player1 - ')
x2=input('digit your guess player2 - ')
if x1==x:
p1+=30
else:
p1=p1-40
if x2==x:
p2+=30
else:
p2=p2-40
return p1,p2
print(game())
我希望程序返回分数并在玩家得分超过200或低于0时结束
答案 0 :(得分:0)
将while条件更改为:
while p1>0 and p2>0 and p1<200 and p2<200
但在以下情况下更具可读性
while 0<p1<200 and 0<p2<200
答案 1 :(得分:0)
如果我考虑您的原始问题,那么问题是您要退还玩家拥有的任何当前值,而应该记住上一个分数,并且如果您希望游戏继续下去的情况发生了,请返回上一个分数。这样可以确保仅返回有效分数
import random
list=['heads','tails']
def game():
player=100
last_score = 0
#Conditions to break while loop
while player > 0 and player < 200:
#Keep track of last score
last_score = player
#Get choice from player, and increase/decrease score
x=random.choice(list)
x1=input('digit your guess player1 - ')
if x1 == x:
player += 9
else:
player -= 10
#Return last score
return last_score
print(game())
将此想法扩展到2人游戏也将解决您的问题!
import random
list=['heads','tails']
def game():
p1=100
p2=100
last_scores = 0,0
# Conditions to break while loop
while (0<p1<200) and(0<p2<200):
# Keep track of last score
last_scores = p1,p2
# Get choice from player, and increase/decrease score
x=random.choice(list)
x1=input('digit your guess player1 - ')
x2=input('digit your guess player2 - ')
if x1==x:
p1+=30
else:
p1=p1-40
if x2==x:
p2+=30
else:
p2=p2-40
return last_scores
print(game())