二十一点 - 字典输出

时间:2017-02-04 21:59:36

标签: python

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的整数点的函数。因此输入是卡的字符串值,输出应该是卡的整数分数。

任何人都可以帮助我写的东西吗?

2 个答案:

答案 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使用字符串