2014-11-08 697 views
0

我正在创建一个基于文本的游戏,需要保持多个属性,例如耐力,健康等,如果他们走到下面,我会遇到麻烦0。我知道一个while循环会工作,我可以这样做:如何在while循环中添加多个条件

life = 1 
while(life > 0): 
    print("You are alive!") 
    print("Oh no! You got shot! -1 Life") 
    life-1 
print("You are dead! Game Over!") 

但我不知道该怎么做,与多个条件,如体力,饥饿,强度等

+0

如果你有生命,力量和耐力,但是饥饿达到0或更低,会发生什么? – 2014-11-08 20:53:00

回答

0

您可以随时使用andor。例如:

while (life > 0) and (health > 0) and (stamina > 0): 
1

可以使用min将它们组合成一个单一的测试:

while min(life, health, stamina) > 0: 
+0

开箱即用的思考 – 2014-11-08 19:57:34

1

由于0评估为False在Python中,你可以使用all

while all((life, stamina, hunger, strength)): 

这将测试所有名称是否不等于零。

然而,如果你需要测试,如果所有的名字都大于零(意思是,他们有可能成为负),你可以添加一个generator expression

while all(x > 0 for x in (life, stamina, hunger, strength)): 
+0

如果它们可能是负数,这将不起作用。 – Barmar 2014-11-08 19:37:45

0

你可以把if语句转换成while循环在每次迭代开始时检查这些统计信息。这样你可以分别处理每个事件。

life = 1 
while(life > 0): 
    if stamina < 1: 
     print "out of stamina" 
     break 
    if hunger < 1: 
     print "You died of hunger" 
     break 
    print("You are alive!") 
    print("Oh no! You got shot! -1 Life") 
    life-1 
print("You are dead! Game Over!")