def get_card_value(s):
s = ' '
cards ={'A':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'10':10,'J':10,'Q':10,'K':10}
for s in cards.keys():
return cards.values(s)
else:
raise ValueError("No card found")
get_card_value(A)
我正在制作一个二十一点游戏,我被困在第一部分,我需要定义一个获取卡s
的整数点的函数。因此输入是卡的字符串值,输出应该是卡的整数分数。
任何人都可以帮助我写的东西吗?
答案 0 :(得分:0)
访问字典中的值不是通过values()
方法完成的,而是通过括号表示法(例如my_dictionary[key]
)。请参阅d[key]
in the documentation。
此外,您可以尝试制作dict
而不是完整功能:
>>> card_points = {'A': 1, '2': 2, '3': 3, '4': 4, '5':5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}
>>> card_points['A']
1
>>> card_points['5']
5
如果需要它是一个函数,你可以轻松地包装这个字典:
def get_card_value(s):
card_points = {'A': 1, '2': 2, '3': 3, '4': 4, '5':5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}
try:
return card_points[s]
except KeyError:
raise ValueError("No card found")
注意:KeyError
是尝试访问字典中不存在的键时引发的异常,因此如果我们遇到其中一个,我们可以选择提高自定义ValueError
异常。
或者如果你想得到花哨的东西(阅读:保存一些击键):
>>> card_points = dict({str(i): i for i in range(2, 11)}, A=1, J=10, Q=10, K=10)
在上面的代码段中,{str(i): i for i in range(2, 11)}
使用dictionary comprehension创建字典映射,将整数2-10的字符串值映射到其数值。对于非数字卡,我将其作为keyword arguments传递。幸运的是,python's built-in dict
constructor可以同时处理这两个问题!
所以如果你刚刚开始,你可能想要使用第一个表单而不是利用一堆python的高级功能:)
答案 1 :(得分:0)
我建议在函数外写一个字典,但如果你想在里面试试这个
def get_card_value(s):
cards = {'A':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'10':10,'J':10,'Q':10,'K':10}
if s in cards:
return cards[s]
else:
raise ValueError("No card found")
然后像这样试试
print(get_card_value("4"))
print(get_card_value("Y"))
字典中的键是字符串,因此您必须使用函数get_card_value使用字符串