可以用try/except语句结束while循环吗?

2024-06-03 14:20:10 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,这里的目标是结束我的while loop,或者如果用户的银行金额达到0 (zero),或者如果用户输入一个0 (zero)的下注金额来终止脚本,那么就结束我的脚本。问题是我不允许使用break语句,尽管程序可以完美地使用exit(),但我也不能使用它,因为我们还没有通过书“到达那里”(讲师希望我们使用我们在书中学习的内容,而不是我们已经知道的内容)。 我真的被难住了。部分原因是因为我在try/except语句中遇到了很多麻烦,所以可能我只是做错了什么,或者可能我需要尝试一个不同的循环。也许你们能帮忙? 我要把我的密码贴在下面。就我而言,一切都很好,但我不能使用exit()break,所以我需要一些关于另一种面向python基础的方法的建议。。。 那么我可以使用try/except吗?如果是,怎么做? 我需要程序继续循环,除非银行到达0 (zero)或用户输入等于0 (zero),这就是我选择while loop的原因。我需要使用不同的循环方法吗? 我将非常感谢您的帮助,并提前向大家表示感谢

import random

def rollDice(cnt):
    die1 = random.randint(1,6)
    die2 = random.randint(1,6)
    x = int(die1 + die2)
    print('Roll #', cnt, 'was', x)
    return x

def total_bank(bank):
    bet = 0
    while bet <= 0 or bet > min([500,bank]):
        print(f'You have ${bank} in your bank.')
        get_bet = input('Enter your bet (or 0 to quit): ')
        if get_bet == '0': 
            print('Thanks for playing!')
            exit()
        bet = int(get_bet)
    return bank,bet

def get_guess():
    guess = 0
    while (guess < 2 or guess > 12):
        try:
            guess = int(input('Choose a number between 2 and 12: '))
        except ValueError:
            guess = 0
        return guess

bank = 500
guess = get_guess
rcnt = 1

while rcnt < 4:
    rcnt = 0
    bank,bet = total_bank(bank)
    guess = get_guess()
    if guess == rollDice(rcnt+1):
        bank += bet * 2
    elif guess == rollDice(rcnt+2):
        bank += bet * .5
    elif guess == rollDice(rcnt+3):
        bank = bank
    else:
        bank = bank - bet
        if bank == 0:
            print(f'You have ${bank} in your bank.')
            print('Thanks for playing!')
            exit()

Tags: 用户getdefexitrandombankprinttry
2条回答

您当然可以使用异常退出循环;只需在while循环内引发异常,并在循环外捕获它:

def total_bank(bank):
    bet = 0
    try:
        while bet <= 0 or bet > min([500,bank]):
            print(f'You have ${bank} in your bank.')
            get_bet = input('Enter your bet (or 0 to quit): ')
            if get_bet == '0': 
                print('Thanks for playing!')
                raise StopIteration()
            bet = int(get_bet)
    except StopIteration:
        pass
    return bank,bet

但更简单的是从循环内部返回:

def total_bank(bank):
    bet = 0
    while bet <= 0 or bet > min([500,bank]):
        print(f'You have ${bank} in your bank.')
        get_bet = input('Enter your bet (or 0 to quit): ')
        bet = int(get_bet)
        if get_bet == '0': 
            print('Thanks for playing!')
            return bank, bet
        return bank, bet

我对try和except函数不是非常熟悉,但是使用try块,您可能会引发错误并像那样结束程序

相关问题 更多 >