-1

名前のリストをロードして、名前を見つけてリストに追加するプログラムがあります。コマンドとその引数を表す文字列を取り、正しい数の引数を持つ有効なコマンドの場合、コマンドとコマンド引数を含むタプルで構成されるペアを返す 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

私は少し立ち往生していて、対話機能に関する助けを探しています。誰かアイデアはありますか?

前もって感謝します!

4

1 に答える 1

0

コード外のファイルやデータベースなどの永続オブジェクトと対話するメソッドを実装しようとしていると思います。Python SQLiteの使用をお勧めします。あなたが使用している言葉は課題を示唆しており、あなた自身の要求は助けを求めているため、完全な解決策は提供していません。

于 2013-04-08T14:34:34.730 に答える