我有一个程序,加载名称列表,您可以找到并添加名称到列表中。我必须编写一个parse_command函数,它接受一个表示一个命令及其参数的字符串,并返回一个由该命令组成的对和一个包含命令参数的元组(如果其具有正确数量的参数的有效命令)。否则,它返回对(无,无)在Python中的交互功能
输出应该是这个样子:
>>>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'未被使用'Invalid Command'将被返回。一个例子是这样的:
>>>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
我有点卡住,正在寻找一些帮助互动功能,有没有人有任何想法?
在此先感谢!
也许你想看看['cmd'](http://docs.python.org/2/library/cmd.html)模块... – sloth 2013-04-08 13:45:52
对不起,这段代码太可怕了,和不可读的,我已经读了你的问题两次,我几乎不知道你在这里做什么。我建议你从编码中抽出时间,多学习一些你想做的事情,找到类似于你在做的事情并研究它。因为无论你在做什么,它都不起作用。 – 2013-04-08 13:45:57
你的意思是交互功能@InbarRose?基本上,要将某人添加到列表中,请使用“a”,然后是详细信息。找到你使用'f'的人后面跟着他们的名字。 'e'只是退出程序。 – 2013-04-08 13:47:53