-1

我有一个程序可以加载名称列表,您可以找到这些名称并将名称添加到列表中。我必须编写一个 parse_command 函数,它接受一个表示命令及其参数的字符串,并返回一个由命令和一个包含命令参数的元组组成的对,如果它是一个具有正确数量参数的有效命令。否则返回对 (None, None)

输出应如下所示:

>>>parse_command('e')
('e',())
>>>parse_command('f')
(None, None)
>>>parse_command('f John Smith')
('f', ('John Smith',))
>>>parse_command('a John Smith, Washington DC, 02532223, 6 August')
('a', ('John Smith', 'Washington DC', '02532223', '6 August'))
>>>parse_command('a John Smith, Washington, 1234')
(None, None)
>>>parse_command('x')
(None, None)

到目前为止,我有这个:

def parse_command(command_string):
i = command_string
if i[0] == 'e':
    return ('e', ())
elif i[0] == 'f':
    command = i[1:]
    if bool(command) == True:
      return ('f', (command,))
    elif bool(command) == False:
        return (None, None)
elif i[0] == 'a':
    command = i[1:]
    section = i.split(',')
    if len(section) == 4:
        return ('a', tuple(i[2:].split(', ')))
    else:
       return (None, None)

一切正常,我得到了我应该得到的输出,但我想编写一个交互函数。因此,如果用户想要查找名称或添加名称,他们可以轻松完成。要将某人添加到列表中,用户将键入“a”,然后键入该人及其所有详细信息。要查找某人,他们会键入“f”,后跟该人的姓名。如果他们想退出程序,他们只需输入“e”。如果不使用“a、e 或 f”,将返回“无效命令”。一个例子是这样的:

>>>List of Names: names.csv
>>>Command: f John Smith
John Smith: Chicago, 12345, 4 July
>>>Command: f roeuh eoruhg
roeuh eoruhg Unknown Friend
Invalid Command: f
>>>Command: a John Smith, LA, 12345, 3 July
John Smith is already a friend 
>>>Command: a Roger Little, Texas, 12345, 9 August
>>>Command: f Roget Little
Roger Little: Texas, 12345, 9 August
>>>Command: e
Saving changes...
Exiting...

到目前为止,我已经写了这个(load_names、add_name 和 display_name 已经写好了):

def interact():
names = load_names(raw_input('List of Names: '))
ended = False
while True:
    result = parse_command(raw_input('Command: '))
    if result is not (None, None):
       if result[0] == 'f':
          return display_name(result[1], names)
          pass
       elif result[0] == 'a':
          return add_name(result[1:], names)
          pass
       elif result[0] == 'e':
          return 'Saving Changes...' + /n 'Exiting...'
          ended = True 
          pass

我有点卡住了,正在寻找有关交互功能的帮助,有人有什么想法吗?

提前致谢!

4

1 回答 1

0

我认为您正在尝试实现一种方法来与代码之外的文件或数据库等持久对象进行交互。我会推荐使用Python SQLite。由于您使用的语言暗示了一项任务,而您自己的要求是帮助,所以我没有提供完整的解决方案。

于 2013-04-08T14:34:34.730 回答