循环继续循环,即使在终止消息之后
Loop continues looping, even after termination message
我在让 user input
在终止消息后停止循环时遇到了一些问题。基本上,在 Enter bet
字段中输入 0 (zero)
后,程序必须打印终止消息并结束。但是,它会在应该跳过时通过询问下一行输入 "Choose a number between 2 and 12"
来继续循环。
我知道 break
或 exit()
可以解决我的问题,但这些都不是可接受的解决方案。在 Enter bet
字段中输入 0 (zero)
后,我需要它来完成并打印终止消息。不继续执行程序。
示例需要输出:
you have 0 in your bank # starting amount
Enter bet (or 0 to quit): 0
Thanks for playing!
我得到的是:
Enter bet (or 0 to quit): 0
Thanks for playing!
Choose a number between 2 and 12: # where the program continues to run
# when it shouldn't. The user should only see this input field if they enter
# number above 0
这是代码
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): ')
bet = int(get_bet)
if get_bet == '0':
print('Thanks for playing!')
return bank, 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
prog_info()
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 * 1.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!')
创建一个起始值为 500 美元的“银行”(变量)。
- 要求玩家下注
- 必须为 0(零)或更大,并且不能超过当前银行中的金额。
掷 2 个骰子
- 如果玩家猜对了第一卷,则将双倍的赌注加到“银行”
- 如果玩家猜对了第二次掷骰,则将下注金额的 1.5 倍添加到“银行”。
- 如果玩家猜对了第 3 卷,则将下注金额添加到银行。
-如果玩家猜测没有匹配任何掷骰,则从“银行”中减去赌注。
让玩家继续玩,直到他们输入“0”(零)作为赌注,或者当他们的银行达到“0”(零)时。
- 不使用 BREAK 或 EXIT()
0
检查应该调用 exit
if get_bet == '0':
print('Thanks for playing!')
exit()
如果您不想使用 exit
或 break
,您需要使用条件
退出主循环
更新total_bank
if get_bet == '0':
print('Thanks for playing!')
return bank, bet
更新主循环
bet = 1 # to start loop
while rcnt < 4 and bet: # exit loop if bet=0
rcnt = 0
bank,bet = total_bank(bank)
if not bet: continue # exit game if bet = 0
guess = get_guess()
if guess == rollDice(rcnt+1):
bank += bet * 2
elif guess == rollDice(rcnt+2):
bank += bet * 1.5
elif guess == rollDice(rcnt+3):
bank = bank
else:
if bet: # bet = 0 if game end
bank = bank - bet
if bank == 0:
print(f'You have ${bank} in your bank.')
print('Thanks for playing!')
您将回到
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 * 1.5
elif guess == rollDice(rcnt+3):
bank = bank
从 total_bank(bank):
中的循环中断开后
你可以通过如下修改主循环来修改 if bet==0 break
while rcnt < 4:
rcnt = 0
bank,bet = total_bank(bank)
if bet==0 :
break;
guess = get_guess()
if guess == rollDice(rcnt+1):
bank += bet * 2
elif guess == rollDice(rcnt+2):
bank += bet * 1.5
elif guess == rollDice(rcnt+3):
bank = bank
编辑 - 不间断地进行。
在执行循环前检查是否 bet!=0。
只需将赌注初始化为零以外的任何值。
bet=1
while (rcnt < 4) and (bet!=0):
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 * 1.5
elif guess == rollDice(rcnt+3):
bank = bank
to get your first line of needed output change your print statement to
print('You have ${} in your bank.'.format(bank))
我在让 user input
在终止消息后停止循环时遇到了一些问题。基本上,在 Enter bet
字段中输入 0 (zero)
后,程序必须打印终止消息并结束。但是,它会在应该跳过时通过询问下一行输入 "Choose a number between 2 and 12"
来继续循环。
我知道 break
或 exit()
可以解决我的问题,但这些都不是可接受的解决方案。在 Enter bet
字段中输入 0 (zero)
后,我需要它来完成并打印终止消息。不继续执行程序。
示例需要输出:
you have 0 in your bank # starting amount
Enter bet (or 0 to quit): 0
Thanks for playing!
我得到的是:
Enter bet (or 0 to quit): 0
Thanks for playing!
Choose a number between 2 and 12: # where the program continues to run
# when it shouldn't. The user should only see this input field if they enter
# number above 0
这是代码
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): ')
bet = int(get_bet)
if get_bet == '0':
print('Thanks for playing!')
return bank, 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
prog_info()
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 * 1.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!')
创建一个起始值为 500 美元的“银行”(变量)。
- 要求玩家下注
- 必须为 0(零)或更大,并且不能超过当前银行中的金额。
掷 2 个骰子
- 如果玩家猜对了第一卷,则将双倍的赌注加到“银行”
- 如果玩家猜对了第二次掷骰,则将下注金额的 1.5 倍添加到“银行”。
- 如果玩家猜对了第 3 卷,则将下注金额添加到银行。 -如果玩家猜测没有匹配任何掷骰,则从“银行”中减去赌注。
让玩家继续玩,直到他们输入“0”(零)作为赌注,或者当他们的银行达到“0”(零)时。
- 不使用 BREAK 或 EXIT()
0
检查应该调用 exit
if get_bet == '0':
print('Thanks for playing!')
exit()
如果您不想使用 exit
或 break
,您需要使用条件
更新
total_bank
if get_bet == '0': print('Thanks for playing!') return bank, bet
更新主循环
bet = 1 # to start loop while rcnt < 4 and bet: # exit loop if bet=0 rcnt = 0 bank,bet = total_bank(bank) if not bet: continue # exit game if bet = 0 guess = get_guess() if guess == rollDice(rcnt+1): bank += bet * 2 elif guess == rollDice(rcnt+2): bank += bet * 1.5 elif guess == rollDice(rcnt+3): bank = bank else: if bet: # bet = 0 if game end bank = bank - bet if bank == 0: print(f'You have ${bank} in your bank.') print('Thanks for playing!')
您将回到
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 * 1.5
elif guess == rollDice(rcnt+3):
bank = bank
从 total_bank(bank):
你可以通过如下修改主循环来修改 if bet==0 break
while rcnt < 4:
rcnt = 0
bank,bet = total_bank(bank)
if bet==0 :
break;
guess = get_guess()
if guess == rollDice(rcnt+1):
bank += bet * 2
elif guess == rollDice(rcnt+2):
bank += bet * 1.5
elif guess == rollDice(rcnt+3):
bank = bank
编辑 - 不间断地进行。
在执行循环前检查是否 bet!=0。 只需将赌注初始化为零以外的任何值。
bet=1
while (rcnt < 4) and (bet!=0):
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 * 1.5
elif guess == rollDice(rcnt+3):
bank = bank
to get your first line of needed output change your print statement to
print('You have ${} in your bank.'.format(bank))