2014-11-12 3 views
-1

저는 파이썬으로 약속 캘린더 응용 프로그램을 만들고 첫 번째 부분과 고민하고 있습니다.빈 사전에 약속을 추가해야합니다.

저는 약속이라고 불리는 빈 사전과 임명을 추가하려고합니다. 그 작동하지만, 어떤 이유로 자신이 약속을 축적하지 :

appointments = {} 
while (True): 
(... I had a choice variable here that would ask the user to either make an appointment, cancel, or view list of appointments. but for right now, i am only focusing on making appointments.) 

    elif choice == 1: #Making an appointment 
     apptDate = input('Enter date (mm/dd/yy)\n') 
     apptTime = input('Enter time (hh:mm)\n') 
     apptDesc = input('Enter a brief description of the appointment\n') 

     #Checking to see if key in dictionary 
     if apptDate not in appointments: 
      newAppt = apptTime + '\t' + apptDesc 
      appointments[apptDate] = newAppt 
     else: 
      appointments[apptDate] = newAppt 
  1. 내가 약속에 apptTime + '\ t'+ apptDesc을 배치 할 필요는 키로 apptDate를 사용하여 사전. 나는 내가 옳은 일을한다고 생각했다.

  2. apptDate가 새 약속을 추가하는 방식에 영향을주기 때문에 apptDate가 이미 약속 사전에 있는지 확인하십시오. 어떤 도움이 좋을 것

+0

아마도 버그가 있습니다. '약속 [apptDate]'를 체크하면 같은 날짜에 다른 시간에 약속을 가질 수 있다는 것을 무시하고 있습니다. – Santiago

답변

0

기본 dict (콜렉션에서 가져옴)를 사용하십시오. 이렇게하면 사전에 키가없는 경우 특정 값을 제공하도록 사전을 초기화 할 수 있습니다. 아무 약속이없는 경우 귀하의 경우에는 당신이 약속의 목록을 가진 각 날짜를 고려할 수 있습니다 (그래서, 기본 DICT는 빈리스트로 초기화된다

from collections import defaultdict 
def default(): 
    return [] 

appointments = defaultdict(default) 

를 그런 다음에 약속을 추가 할 때마다 중요한, 당신은 단지이 매우 깨끗하고, 검사 문을

편집을 피할 수

appointments['date'].append("Info") 

을 : 당신이 원하는 방식으로 일을한다면, 당신의 마지막 단락이 될 수 있습니다

if apptDate not in appointments: 
     newAppt = apptTime + '\t' + apptDesc 
     appointments[apptDate] = [newAppt] 
else: 
     newAppt = apptTime + '\t' + apptDesc 
     appointments[apptDate].append(newAppt) 
+0

확실한 방법이지만 확실하지는 않습니다. 아직이 방법을 알지 못했습니다. 강사가 저처럼 프로그램을하기를 원했지만, 같은 날짜로 구성된 사전에 약속을 추가하는 데 어려움이 있습니다. – yummyyenni

+0

괜찮습니다. 제 편집 (또는 이와 비슷한 것)이 원하는 동작을 제공해야합니다. 나는.이제 각 키에 대한 목록이 있습니다. – user3684792

+0

오, 그 전에 내가 가진 것들은 newApp 주위에 []를 넣지 않았기 때문에 제대로 작동하지 않았습니다. [] 주위에 newAppt가 영향을 미칩니 까? 그렇다면 어떻게? – yummyyenni

0
appointments = [] 

appointments = {} 

는 키가 사전 사용

에있는 경우

확인하기 위해 사전을하다 목록입니다 감사합니다

if key in dictionary: 

(키는 apptDate가됩니다)

+0

아, 미안합니다. 오타였습니다. – yummyyenni

+0

괜찮습니까? 약속에 apptDate 경우 : newAppt = apptTime + '\ t'+ apptDesc 약속 [apptDate] + = newAppt 다른 : 인쇄 ('.하지 사전에 날짜') – yummyyenni

+0

확인 ...하지만 경우는 거기 당신은 그것을 추가 할 수 있습니다 ... –