Python - 细分用户输入

时间:2015-12-31 06:14:59

标签: python input

在我的Python脚本中,我有一个接受用户输入的菜单,然后根据该输入将打印一些包含信息的行。它看起来像这样:

while True:
    # Print the menu
    choice = raw_input('Pick an option: ')
    if choice == 'item_1':
        # Display item_1's contents
    elif choice == 'item_2':
        # Display item_2's contents
    # etc...

每个item_显示的信息略大于我想要的信息,因此我想将每个信息分成多个页面。

要访问那些我希望它基于用户输入的不同页面,但不是每个页面都有完全不同的输入,我希望用户能够在原始输入旁边写入页码(两者之间的空间)。因此,如果用户输入item_1item_1 1,则会获得item_1的第一页,如果他们输入item_2 2,则会获得item_2的第二页,并且等等。

如何将用户输入分成几部分才能执行上述操作?

=============================================== ============================

修改

我对每个item以及它的作用有点误导。在剧本的早期我有这个:

def item_1():
    # Print line 1
    # Sleep
    # Print line 2
    # Sleep
    # Print line 3

def item_2():
    # Print line 1
    # Sleep
    # Print line 2
    # Sleep
    # Print line 3

我真正想要做的是定义更多的功能,每个页面一个,然后当用户在`item'之后输入一个数字时调用它们。 (有点像解析参数)。像这样:

输入item_1item_1 1>>输出item_1()

输入item_1 2>>输出item_1_p2()

输入item_3 4>>输出item_3_p4()

并且,如第一个输入示例所示,如果输入中没有提到任何页面,我希望显示给定输入的第一页。

1 个答案:

答案 0 :(得分:2)

使用包含每个项目list字符串的字典:

book = {'item_1':['page 1', 'page 2', 'page 3'], 'item_2':['page 1', 'page 2', 'page 3']}

while True:
    choice = raw_input('Pick an option: ').split()
    if not choice:
        break
    if len(choice) == 1:
        for page in book[choice[0]]:
            print page
    else:
        print book[choice[0]][int(choice[1])-1]

首先,它将输入拆分为空格。如果用户只是按 Enter 没有字符,它就会停止。否则,它将执行以下操作:

  1. 检查分割产生的条款数
  2. 如果只有一个字词,那么它就是'item_x',所以打印整个条目
  3. 如果有多个字词,'item_x'以及页码,请打印正确的页面