我正在尝试使用此列表中的项目生成并打印编号列表:
ItemList = [Item1,Item2,Item3,Item4]
因此,编号列表应如下所示。
然后,程序将要求用户选择一个项目。用户将通过输入数字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。可能有各种各样的范围。
答案 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]))
此解决方案本质上对每行使用一个带有enumerate
和string 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)