使raw_input大写特定字母以匹配字典键和值

时间:2015-10-25 18:17:49

标签: python python-2.7

我正在开发一个基于文本的RPG。现在,我正在创建一个战斗机制,为玩家提供他们的攻击选项,并根据玩家在他们的库存字典中的项目执行代码,就像这样(我会保持代码简单明显的原因):

inventory = {'Weapons': ['Iron Longsword', 'Dagger'],
            'Gold': 10,
            'Spells': [' ']}

print "Your attack methods are: [Melee] -- %s, [Spells] -- %s" % (inventory["Weapons"], inventory["Spells"]

attack = raw_input("Choose an attack method provided above: ")
if attack == inventory["Weapons"] or attack == inventory["Spells"]:
     #Initiate combat...

我可能错误地理解了这个概念,但我面临的问题是当一个项目被添加到库存时,它以适当的大小写显示,例如, “铁长剑”与“铁长剑”。我认为问题在于,当if语句检查字典时,玩家在raw_input“攻击”下输入的项目,除非正确地大写,否则它不会识别该项目。但是,我想让玩家只需输入武器或法术,无论预先存在大小写。

我认为这个问题可能有一个真正的解决方案,我再一次肯定是错的。解决方案是编辑原始输入以转换为正确的大写字母,就像我在使用'.lower()'时字符全部为小写时一样

我很欣赏任何有关此类简单问题的帮助。再次感谢堆栈溢出,当我尝试学习编程语言时,对我来说真是太棒了。

2 个答案:

答案 0 :(得分:0)

已经有一段时间了,因为我使用了python但是下面的代码段应该测试输入是否等于其中一个攻击或法术,无论大小写是什么。您可以在测试时将字符串大写或小写。我建议您在将来测试字符串时这样做,这样您的用户就不需要敏感地键入他的输入Case。

if attack.lower() == inventory["Weapons"].lower() or attack == inventory["Spells"].lower():

答案 1 :(得分:0)

你可以比较两个字符串,如

str1 = 'Longsword'
str2 = 'LongSword'

print str1.lower() == str1.lower()

评估为真。

因此,您可以使用lower()方法并使用非大写的键和值。

您还应该使用

if attack in [x.lower() for x in inventory["Weapons"]]

而不是像现在这样将字符串与列表进行比较。