我想將另一張卡的值與“else”寫在同一行中。例如卡號 2 等于 2,卡號 3 等于 3...
順便說一句,從 1 到 13 是從王牌到國王,而 15、16、17、18 是套房。
def get_value(num, suit):
if (suit == 18 or suit == 15) and num == 7:
return -21
elif suit == 16 and num == 7:
return -11
elif num == 1 and (suit== 15 or suit==16 or suit==17 or suit==18):
return 11
elif (num == 12 or num == 13) and (suit== 15 or suit==16 or suit==17 or suit==18):
return 10
elif num == 11 and (suit== 15 or suit==16 or suit==17 or suit==18):
return 25
uj5u.com熱心網友回復:
如果我理解正確,您想回傳卡片的值,其中 ace、jack、queen 和 king 以及特定花色的 7 回傳特殊值,否則僅回傳數字值。
假設 15-18 是唯一有效的花色,如果所有花色都回傳相同的值,我們不需要檢查花色是否是其中之一,我們只需要處理特殊情況。
def get_value(num, suit):
if num==7 and suit in (15,18): # suit is either 15 or 18
return -21
elif num==7 and suit==16:
return -11
elif num==1: # suit doesnt matter for ace
return 11
elif num in (12, 13): # queen or king
return 10
elif num==11: # ace
return 25
else: # all other cases - return num as value
return num
我猜最后的 else 陳述句就是你要找的,在一般情況下,你得到的值只是卡上的數字,在一般情況下,沒有特殊情況觸發,例如get_value(3, 15)會 return 3。
uj5u.com熱心網友回復:
我想這就是你想要的:
def get_value(num, suit):
return -21 if (suit == 18 or suit == 15) and num == 7 else -11 if suit == 16 and num == 7 else 11 if num == 1 and (suit== 15 or suit==16 or suit==17 or suit==18) else 10 if (num == 12 or num == 13) and (suit== 15 or suit==16 or suit==17 or suit==18) else 25 if num == 11 and (suit== 15 or suit==16 or suit==17 or suit==18) else None
因為這非常混亂和混亂,我認為檢查約束條件會更好:
def get_value(num, suit):
constraints = {((18, 15), (7,)): -21, ((16,), (7,)): -11, ((15, 16, 17, 18), (1,)): 11, ((15, 16, 17, 18), (12, 13)): 10, ((15, 16, 17, 18), (11,)): 25}
for x in constraints:
if suit in x[0] and num in x[1]:
return constraints[x]
約束元組(例如((18, 15), (7,)))僅在其第一個元組(例如(18, 15))包含花色且其第二個元組(例如(7,))包含時才滿足數量
此外,如果傳入的 args 與約束不匹配,您可以回傳一個默認值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/369987.html
上一篇:關于回圈后遞減與if連接的問題
