如果玩家输入任何超出范围或无效的值,我希望它循环回来让他再次下注。
当我用int()包装raw_input时,我可以让这个中途工作。
然而,如果说玩家不小心输入一个字母或者只是输入而没有输入任何内容,那么就会引发错误,从而停止游戏/剧本。
因此,如果玩家确实犯了这样的错误,我需要它再次回到“下注”,而不是抛出错误并使脚本崩溃。
def betAmount():
if number_of_hands == 1:
if chip_count_player1 > 0:
global chips_bet
chips_bet = raw_input("Place your bet!")
if chips_bet in range(0, chip_count_player1 + 1):
print "Your bet is within range"
else:
print "NOT IN RANGE"
betAmount()
答案 0 :(得分:1)
您需要将chips_bet
转换为此类数字
try:
chips_bet = int(raw_input("Place your bet!"))
except ValueError:
betAmount()
您正在构建一个新的数字列表,然后检查其中是否存在chips_bet
。这是低效的。你可以这样检查
if 0 <= chips_bet <= chip_count_player1:
基本构思可以像这样实现
bet = getBet()
...
def getBet(maximum):
bet = -1
while (bet < 0) or (bet > maximum):
try:
bet = int(raw_input("Place your bet!"))
except ValueError: pass
return bet
答案 1 :(得分:0)
你可以将你的提示/输入/验证循环分成一个小函数,然后调用它(将重试循环与程序逻辑分开会更容易)
例如,这不会抛出,只会返回一个经过验证的数字:
def safe_int_input(prompt, validate):
while True:
try:
val = int(raw_input(prompt))
if validate(val):
return val
except: pass
print "invalid input"
你会这样称呼它:
chips_bet = safe_int_input("Place your bet! ",
lambda v:(v >= 0 and v <= chip_count_player1))