如何使用特定条件

时间:2017-07-03 20:38:28

标签: python python-3.x

我试图弄清楚如何让用户输入列表中对象的索引号。我的最终目标是显示您的法术书中按索引编号排序的法术列表。然后我希望用户能够输入索引号来选择法术并用它执行一个功能。这是一个简单的例子:

(法术是对象)

spells = [spell1(), spell2()]
print(spells.index(Spell),Spell.name)

应该显示:

0 spell1

1 spell2

x = input('Input number of spell')
print(spells[int(x)].description)

因此,通过输入列表中对象的索引号,我检索了它的描述。我已经让这个功能起作用了。但是,我在设置规则时遇到困难,因此除了列表中的可用索引之外,它不接受任何输入。在此示例中,只有0和1应该是可用输入。我还想要'p'选项回到上一个屏幕。

2 个答案:

答案 0 :(得分:0)

如果您想要混合类型输入,那么您需要将所有内容视为字符串并单独处理它。一个简单的技巧是你可以先检查字母表,然后再尝试将其他任何内容转换为int。这不是完全破解,因为用户可以输入其他字母。最有效的方法可能是使用try catch语句,同时转换为int。

答案 1 :(得分:0)

所以你有两个需要通过的条件:x必须是一个有效的数字,并且必须在你的法术列表的范围内。

您可以将其包装在适合您的应用程序的任何控制流程中。例如,您可以重新提示用户,直到他们提供有效的输入:

def validate_spell_index(spell_list, i):
    return i.isdigit() and int(i) in range(len(spell_list))

x = input('Spell index> ')
while not validate_spell_index(spells, x):
    print('Please give a number between 0 and {}.'.format(len(spells) - 1))
    x = input('Spell index> ')

print(spells[int(x)].description)

demo(对于任何拼写错误的法术,我会发出警告)