0

所以我有两个清单。第二个列表比第一个列表有更多的元素。我希望用户从第二个列表中的多余元素中选择一个元素,但是这些元素的名称很长,所以我希望用户只选择他想要的列表中的哪个元素,而不是输入名称根据他们在列表中的位置。

这是我到目前为止的代码

ListZero = ["One", "Two", "Three", "Four"]
ListOne = ["One", "Two", "Three", "Four", "Five", "Six", "Seven"]
numberOfNew = -(len(ListOne) - len(ListZero))
Name = raw_input("Please choose which number you wish to use: %s \nYour choice is: " % (", ").join(ListOne[numberOfNew:]))
if Name not in (ListOne[numberOfNew:]):
    print "Error"
else:
    print Name

Example output:
Please choose which number you wish to use: Five, Six, Seven 
Your choice is: Seven
Seven

这将打印出第二个列表中的新元素,并允许用户将这些元素之一分配给参数“名称”。

但是由于我的实际代码中的列表元素会更长,我希望用户能够输入元素在列表中的位置并以这种方式将其分配给“名称”属性。

Example output:
Please choose which number you wish to use: Five[5], Six[6], Seven[7] 
Your choice is: 7
Seven

我有办法做到这一点吗?我将不胜感激任何帮助。

谢谢你。

4

2 回答 2

2

我会把你的问题分解成小块-

我会为多余的元素使用集合:

>>> set(ListOne) - set(ListZero)
set(['Seven', 'Six', 'Five'])

>>> Excess = list(set(ListOne)-set(ListZero))
['Seven', 'Six', 'Five']

接受用户输入:

>>> ExcessList = ["{0} [{1}]".format(name, index) for index, name in enumerate(Excess,1)]
['Seven [1]', 'Six [2]', 'Five [3]']

>>> Name = raw_input("Please choose which number you wish to use: {} \n".format(', '.join(ExcessList)))

请选择您希望使用的数字:七 [1]、六 [2]、五 [3]

处理用户输入:

try:
    Selected = Excess[int(Name)-1]
    print "Your choice is: {}".format(Selected)
Except: 
    print "Invalid input"

当我们输入 1 时:

您的选择是:七

我将由您将这些部分组合成一个工作程序!您应该彻底阅读 Python 文档 - 查看enumeratelistset和字符串格式。

于 2012-10-19T09:03:45.093 回答
0

关于什么

index = raw_input()
index = int(index)

您的选择是 ListOne[index-1]

于 2012-10-19T09:02:25.460 回答