Python 我想知道为什么我的程序没有在while循环中停止

Python 我想知道为什么我的程序没有在while循环中停止,python,python-3.x,Python,Python 3.x,我有以下问题-写一个程序来玩下面这个简单的游戏。玩家以100美元起价。各 翻转硬币时,玩家必须猜正面或反面。玩家每人赢得9美元 猜对了,每猜错一次就损失10美元。游戏结束时,玩家 没钱了,或者有200美元 我的程序实际上正在运行。然而,当玩家的分数降到零时,我的程序仍然在运行,这不是我所期望的。我需要知道在我的if语句中是否有我可以做的事情,或者当我有很多条件时,是否有一种更简单的方法来陈述 import random list=['heads','tails'] def game():

我有以下问题-写一个程序来玩下面这个简单的游戏。玩家以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())
随机导入
列表=['heads','tails']
def game():
p1=100
p2=100

while(p1>0或p2>0)和(p1将while条件更改为:

while p1>0 and p2>0 and p1<200 and p2<200

<代码> > P1>0和P2>0,P1<P>如果我考虑了你原来的问题,问题是你正在返回玩家当前的任何值,而你应该记住最后的分数,如果你希望游戏停止的条件发生,返回最后的分数。这将确保只有有效的分数返回

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())
随机导入
列表=['heads','tails']
def game():
玩家=100
最后一次得分=0
#中断while循环的条件
当玩家>0且玩家<200时:
#记录最后的分数
最后得分=球员
#从玩家那里获得选择,并增加/减少分数
x=随机选择(列表)
x1=输入('猜数字播放器1-')
如果x1==x:
玩家+=9
其他:
玩家-=10
#返回最后分数
返回最后的分数
打印(游戏())
将这一想法推广到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())
随机导入
列表=['heads','tails']
def game():
p1=100
p2=100
最后的分数=0,0
#中断while循环的条件

虽然(0为什么你的代码中有两个玩家?这是一个简单的游戏,我想让程序变得更困难。游戏什么时候结束?当任何一个玩家低于0,或者当两个玩家都低于0时?如果有任何玩家达到0或200,程序应该停止。但是我假设这四个条件必须同时满足,这应该是正确的或者情况并非如此。游戏将以四种方式结束:
p1
低于0,
p2
低于零,
p1
高于200,
p2
高于200。因此,直到这四个条件都保持不变。游戏将继续。我只是不理解这一点。在我的第一个代码中,我开始与两名玩家一起计算p值ing 100.当我迭代im时,实际上是加减这些值。在这些情况下,当前值不是最后的分数?不,while循环实际上是在达到条件后进行计算的,这意味着当player1和player2达到负值时,while循环中断,这会导致另一种方式得到负值解决这个问题的方法是使用一个白色的真循环,并通过if条件中断,在这种情况下,您不需要记住最后的分数
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())