python - 是否可以使用 try/except 语句结束 while 循环?
问题描述
因此,这里的目标是在用户的银行金额达到或用户输入下注金额以终止脚本的情况下结束我while loop
的或我的脚本。问题是我不允许使用语句,尽管该程序可以完美地与在书中而不是我们已经知道的)。我真的很难过。部分原因是我在 try/except 语句中遇到了很多困难,所以也许我只是在那里做错了什么,或者我需要尝试不同的循环。也许你们可以帮忙?将在下面发布我的代码。就我而言,一切正常,但我不能使用或0 (zero)
0 (zero)
break
exit()
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()
解决方案
您当然可以使用异常退出循环;只需在循环内引发异常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
推荐阅读
- c - 移植 AT&T inline-asm inb / outb 包装器以使用 gcc -masm=intel
- python - 查找列表中的哪些值小于/大于数字
- node.js - React Native 无法运行成功的 fetch 来表达 API
- javascript - jquery过滤元素,元素增加时的速度问题
- c# - ASP.NET Web API 每秒返回数据
- java - 如何通过按钮操作将字符串传递给类
- javascript - CSS 和语义 ui cdn 在 localhost 中不起作用
- ruby - Ruby 就地排序子数组
- c++ - morphologyEx 是否应该使用矩阵元素作为边框像素?
- c# - Ag-grid - 在 Angular 7 中设置层次结构和总数