如何使用另一个列表中的元素打印编号列表?

时间:2019-04-18 22:02:11

标签: python

我正在尝试使用此列表中的项目生成并打印编号列表:

ItemList = [Item1,Item2,Item3,Item4]

因此,编号列表应如下所示。

  1. Item1
  2. Item2
  3. Item3
  4. 第4项

然后,程序将要求用户选择一个项目。用户将通过输入数字1到4选择一个项目。

然后程序应将用户选择的项目分配给一个变量,我们将其称为UserChoice。

我通过将用户的输入分配给列表的索引尝试了许多不同的方法,但是它不起作用。

Item1, Item2, Item3, Item4 = "Item1", "Item2", "Item3", "Item4"

ItemList = [Item1, Item2, Item3, Item4]

在这里,我不确定如何打印每个项目的实际索引。

OptionsList = for x in ItemList:
                 print(x)

userInput = input("Choose an item by inputting a number 1-4.")

List.index = userInput

UserChoice = List.index

print(UserChoice)

我希望用户输入一个数字1-4从列表中选择该项目,并将其分配给userchoice变量。

为便于记录,项目列表的大小将有所不同,因此不能是仅提供1-4的代码。可能是1-8、1-3、1-5。可能有各种各样的范围。

2 个答案:

答案 0 :(得分:0)

# Define menu items
items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
    'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
# Define format for each line of the menu (indentation of the numbers)
line = "{{: >{}}}. {{}}".format(len(str(len(items))))
# Loop to print all items and their respective number
for i, item in enumerate(items, 1):
    print(line.format(i, item))
# Input from user
number = int(input("Please choose a number: "))
# Print chosen item back to user
print("You have selected: {}".format(items[number - 1]))

此解决方案本质上对每行使用一个带有enumeratestring formatting的循环。您的输出可能看起来像这样:

 1. a
 2. b
 3. c
 4. d
 5. e
 6. f
 7. g
 8. h
 9. i
10. j
11. k
12. l
13. m
14. n
15. o
16. p
17. q
18. r
19. s
20. t
21. u
22. v
23. w
24. x
25. y
26. z
Please choose a number: 22
You have selected: v

您仍然需要处理错误的用户输入之类的事情,例如负数或根本不是数字。

答案 1 :(得分:0)

首先,使用enumerate打印项目的索引。然后,接受用户输入,因为列表的索引为零,所以减去1,然后使用它访问所选元素。

ItemList = ['Item1', 'Item2', 'Item3', 'Item4']

for index, item in enumerate(ItemList, start=1):
    print(index, item)

input_index = int(input('Choose an item by inputting a number 1-{}.\n'.format(len(ItemList))))
user_choice = ItemList[input_index - 1]
print('You chose:', user_choice)