首页 > 解决方案 > 我想知道为什么我的程序没有在我的 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,我希望程序返回分数并结束

标签: pythonpython-3.x

解决方案


如果我考虑您最初的问题,那么问题是您正在返回玩家拥有的任何当前值,而不是您应该记住最后一个分数,如果您希望游戏停止的条件发生,请返回最后一个分数。这将确保只返回有效分数

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())

推荐阅读