2013-04-08 5 views
-1

나는 목록에서 이름을 찾아 목록에 추가 할 수있는 이름 목록을로드하는 프로그램이 있습니다. 필자는 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'가 사용되지 않으면 '잘못된 명령'이 반환됩니다. 예는 다음과 같이 될 것이다 :이 (load_names, add_name 및 DISPLAY_NAME가 이미 작성된) 작성했습니다 지금까지

>>>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... 

:

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 

내가 조금 붙어있어 일부 찾고 있어요 상호 작용 기능에 대한 도움, 누구에게 아이디어가 있습니까?

미리 감사드립니다.

+1

아마도 [cmd'] (http://docs.python.org/2/library/cmd.html) 모듈을 살펴보고 싶을 것입니다 ... – sloth

+2

죄송합니다.이 코드는 끔찍합니다. 읽을 수 없으며, 나는 당신의 질문을 2 번 읽었으며, 당신이 여기서 무엇을하려고하는지 거의 알지 못합니다. 나는 코딩에서 시간을 내고,하고 싶은 일에 대해 좀 더 배우고, 당신이하고있는 것과 비슷한 것을 찾아서 공부하는 것이 좋습니다. 당신이하는 일이 무엇이든간에 그것은 작동하지 않습니다. –

+0

상호 작용 함수 인 @InbarRose를 의미합니까? 기본적으로 목록에 누군가를 추가하려면 'a'다음에 세부 정보를 사용하십시오. 누군가를 찾으려면 이름 뒤에 'f'를 사용하십시오. 'e'는 단순히 프로그램을 종료합니다. –

답변

0

코드 외부의 파일이나 데이터베이스와 같은 영구 객체와 상호 작용하는 메소드를 구현하려고한다고 생각합니다. Python SQLite을 사용하시기 바랍니다. 사용하는 언어가 과제를 제안하고 자신의 요청이 도움이되기 때문에 완전한 솔루션을 제공하지 못했습니다.

+1

파일을로드하고 파일로 저장하는 함수를 작성했습니다. 가능한 경우 코드를 가능한 한 기본으로 유지 하시겠습니까? 생각해 줘서 고마워. –

+1

아니요, 이해가되지 않습니다. 파일이 충분한 기능을 제공하지 않는다는 것을 곧 알게 될 것입니다. 당신이 설계하는 것은 * 데이터베이스입니다. 왜 그렇게되지는 않습니까? SQLite는 특히 당신을 위해 고안된 것으로 실제 데이터베이스가 아닌 단순한 파일이며 API를 사용하는 한 데이터베이스처럼 작동합니다. 아주 간단하고 적절한 코딩. –

+1

그것은 숙제 임무이며, 지시 사항에 의해서만 말하고 있습니다. –