在使user input
终止消息后停止循环时,我遇到了一些麻烦。基本上,一旦在0 (zero)
字段中输入Enter bet
,程序就必须打印终止消息并结束。但是,它继续循环,询问何时应跳过输入"Choose a number between 2 and 12"
的下一行。
我知道break
或exit()
可以解决我的问题,但是这些不是可接受的解决方案。在0 (zero)
字段中输入Enter bet
后,我需要它来完成并打印终止消息。不要继续执行该程序。
NEEDED输出示例:
you have $500 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的“银行”(变量)。
滚动2个骰子
让玩家继续玩,直到他们输入“ 0”(零)作为下注,或者当他们的下注达到“ 0”(零)时。
答案 0 :(得分:3)
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!')
答案 1 :(得分: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
从total_bank(bank):
内部循环中断后
您可以通过如下修改修改bet == 0时中断的主循环
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
答案 2 :(得分:0)
要获得所需输出的第一行,请将打印语句更改为
print('You have ${} in your bank.'.format(bank))