python - 我想知道为什么我的程序没有在我的 while 循环中停止
问题描述
嗨,伙计们,我有以下问题 - 编写一个程序来玩以下简单的游戏。玩家以 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,我希望程序返回分数并结束
解决方案
如果我考虑您最初的问题,那么问题是您正在返回玩家拥有的任何当前值,而不是您应该记住最后一个分数,如果您希望游戏停止的条件发生,请返回最后一个分数。这将确保只返回有效分数
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())
推荐阅读
- protractor - 量角器:在特定页面中,量角器操作均不起作用
- javascript - 所有 optgroups 标签都需要显示在顶部
- python - 当字典包含使用 pd.DataFrame.append() 添加的 int 元素时,数据类型会发生变化
- python - 如何调试 PyGitHub 没有响应?
- api - devOps API 401 未授权(发布和变更集)
- android - 应用程序被杀死时 Xamarin AndroidX WorkManager 无法正常工作
- java - .xlsx 文件是如何从 Web 应用程序中的字节数组生成的?
- user-interface - PMVC GUI:如何在演示模型中描述屏幕转换
- pine-script - 交易反向 3 逗号错误 - Pinescript
- java - 给定两个大小分别为 n 和 m 的列表 V1 和 V2。返回两个列表共有的元素列表,并按排序顺序返回列表