名前のリストをロードして、名前を見つけてリストに追加するプログラムがあります。コマンドとその引数を表す文字列を取り、正しい数の引数を持つ有効なコマンドの場合、コマンドとコマンド引数を含むタプルで構成されるペアを返す parse_command 関数を作成する必要があります。それ以外の場合は、ペアを返します (なし、なし)
出力は次のようになります。
>>>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
私は少し立ち往生していて、対話機能に関する助けを探しています。誰かアイデアはありますか?
前もって感謝します!