Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python范围和字典_Python_Dictionary_Range - Fatal编程技术网

Python范围和字典

Python范围和字典,python,dictionary,range,Python,Dictionary,Range,我会尽量保持简短。我想尝试允许玩家在拥有0-99(或任何其他范围)金钱时获得“我第一美元”徽章。 这是我一直在尝试的方法,但是,我不确定这是否是最好的方法,因为我仍在学习如何编写代码 这是我在该网站上的第一篇帖子,我希望所有内容的格式都正确。为什么不为此使用一个函数 money_badges = {range(0,100):'Me first dollar', range(100,150):'Mo\' money mo\' problems',

我会尽量保持简短。我想尝试允许玩家在拥有0-99(或任何其他范围)金钱时获得“我第一美元”徽章。 这是我一直在尝试的方法,但是,我不确定这是否是最好的方法,因为我仍在学习如何编写代码


这是我在该网站上的第一篇帖子,我希望所有内容的格式都正确。

为什么不为此使用一个函数

money_badges = {range(0,100):'Me first dollar',
                range(100,150):'Mo\' money mo\' problems',
                range(150,100000):'So much money :D'}
money = 5
if money in money_badges:
    print('You have been awarded the ' +money_badges[money]+ ' badge')
def money_徽章(钱):
如果货币<100:
还我第一块钱
elif money<150:
返回“Mo \”金钱Mo \“问题”
elif货币<100000:
返回“这么多钱:D”
其他:
返回“说什么?”
钱=5
如果货币中的货币有徽章:
打印('您已获得'+金钱\'徽章(金钱)+'徽章')
或者您可以执行此操作(作为带有的函数):

money_徽章={(0100):“我第一美元”,
(100150):“没钱没问题”,
(150100000):“这么多钱:D”}
def奖章(货币):
对于金钱徽章(U徽章):
最小值,最大值=徽章
如果最小值<货币<最大值:
退钱徽章[徽章]
打印奖章(5)
给我第一美元
打印奖章(12345)
这么多钱:D

我会将最小-最大值存储为元组的键,而不是枚举范围,因为徽章数量有限,一组if语句会运行得更好。您可以在Python字典中将列表用作键吗?我认为键必须是不可变的。@bsoist:在Python2中,range返回一个列表,但在Python3中,它实际上更接近Python2中的xrange。我可以想象,转移到Python3会使范围返回一个不可变的值。因此,添加Python 3标记可能会很好。@Nularman谢谢,我认为可能是这样,但你是对的-标记它可能会很好如果你调整以处理越界,我将向上投票并删除我的答案。从技术上讲,它通过返回
None
()如果函数返回None有意义的话,那么实际使用“returnnone”可能是明智的。
def money_badges(money):
    if money < 100:
        return 'Me first dollar'
    elif money < 150:
        return 'Mo\' money mo\' problems'
    elif money < 100000:
        return 'So much money :D'
    else:
        return 'Say what?'

money = 5
if money in money_badges:
    print('You have been awarded the ' + money_badges(money)+ ' badge')
money_badges = {(0,100):'Me first dollar',
                (100,150):'Mo\' money mo\' problems',
                (150,100000):'So much money :D'}

def AwardBadge(money):
    for badge in money_badges:
        min, max = badge
        if min < money < max:
            return money_badges[badge]

print AwardBadge(5)
Me first dollar
print AwardBadge(12345)
So much money :D