Python 21点——字典输出

Python 21点——字典输出,python,Python,我正在做一个21点游戏,第一部分我需要定义一个函数来获取卡s的整数点。所以输入是卡片的字符串值,输出应该是卡片的整数分数 有人能帮我写些什么吗?访问字典中的值不是通过values方法,而是通过括号表示法,例如my_dictionary[key]。看 此外,您可以尝试制作dict而不是完整的函数: 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,

我正在做一个21点游戏,第一部分我需要定义一个函数来获取卡s的整数点。所以输入是卡片的字符串值,输出应该是卡片的整数分数


有人能帮我写些什么吗?

访问字典中的值不是通过values方法,而是通过括号表示法,例如my_dictionary[key]。看

此外,您可以尝试制作dict而不是完整的函数:

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)
如果您需要它成为一个函数,您可以轻松地包装此词典:

>>> 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
注意:KeyError是尝试访问字典中不存在的密钥时引发的异常,因此如果遇到其中一个,我们可以选择引发自定义ValueError异常

或者,如果您想获得奇特的阅读:保存一些击键:

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")
在上面的代码段中,{stri:i for i In range2,11}使用创建字典,将整数2-10的字符串值映射到它们的数值。对于非数字卡,我将它们作为。幸运的是,我们可以同时处理这两个问题


因此,如果您刚刚开始,您可能希望使用第一种形式,而不是利用python的一系列高级功能:

我建议在函数外部编写字典,但如果您希望在函数内部编写字典,请尝试以下方法

>>> card_points = dict({str(i): i for i in range(2, 11)}, A=1, J=10, Q=10, K=10)
然后像这样试试

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")

字典中的键是字符串,所以您必须使用函数get\u card\u value using strings

我将仔细查看所有的键。把这些和你写的东西比较一下。你看到在这些操作中有什么东西可以更好地为你所要做的工作吗?需要考虑的一点是,通过给它分配一个空字符串来重写S的值。@ Jos:实际上,它将一个字符串中的一个空格字符分配给S,但否则你所做的点是准确的。此外,传递给函数的card rank参数应该是字符串:即get_card_值'a',会员资格测试应该只针对卡中的s:。提示:在函数中,cards['a']将等于什么?它表示名称'a'不是defined@Cindy有关如何将其包装到函数中的信息,请参见get_card_values代码块
print(get_card_value("4"))
print(get_card_value("Y"))