2016-06-23 8 views
-1

저는 작업중인 작업을 자동으로 정렬하는 Python 프로그램을 만들려고합니다. 지금까지 사전을 만들었습니다. 예를 들어 :사전에 변수를 사용하는 방법

monday = ('1' : 'clean the counters') 

모든 사람에게 번호를 할당합니다

joe = random.randint(1,3) 

을하지만 난하려고하면

print ("Today Joe has to do the", monday[joe]") 

가 오류를 뱉어.

이 작업을 수행하는 더 좋은 방법이 있습니까? 아니면 분명하지 않은 것이 있습니까?

+1

이 월요일 같은 튜플 = {'1 '하지 사전을 사용해야합니다 예를 들어

카운터 '} 다음 조 변수를 문자열로 변환하십시오. – Aram

+1

''1''은 문자열입니다. 'random.randint (1,3)'은 정수를 반환합니다. 따라서 사전에 "1", "2"및 "3"키가 포함되어 있으면 정수 키를 사용하여 해당 키를 찾을 수 없습니다. –

답변

1

코드에 몇 가지 오류가 있습니다. 첫째, 당신이 좋아, 사전,하지 ()을 정의 할 {}를 이용해야한다 : 또한

monday = {1 : 'clean the counters'} 

, 당신은 당신이 정수 키를 사용하여 사전을 검색 할 수 없기 때문에 내가의 1의 오프 인용했다 것을 알 수 있습니다 모든 키가 문자열 인 경우 randint이 생성됩니다.

마지막으로, 당신은 아마 당신을 인쇄 할 때 원하는 :

print ("Today Joe has to " + monday[joe]) 

때문에 당신이 정상적인 문장을 생산하지 않습니다했다 방법.

+0

죄송합니다. 오타가 누락되었습니다. 단지 인용 오류가 발생했습니다. –

+0

@CharlesConrad 문제 없습니다. – Andrew

3

오류가 발생할 수있는 따옴표가 있습니다. 또한 joe에 할당 한 정수를 char/string으로 변환해야합니다. 이는 사전 키에 저장되는 방법이기 때문입니다.

더 좋은 방법은 사전을 목록으로 만드는 것입니다. 1, 2, 3, char/형식을 사용하면 불필요한 수준의 조회가 추가됩니다. 코드에 다음과 같은 수정을 시도하고 작동합니다

Monday = ["clean the counters", "wash the floor", "take out the trash"] 
joe = random.randint(0, 2) # or joe = random.randint(0, Monday.length) 
print("Today Joe has to do the", Monday[joe])` 
+0

키를 인식하는 좋은 직장은 지표로 가장 한 것입니다. –

+0

좋은 직장. 이것은 사전을 사용하는 것보다 낫다 – aditya

0

: '를 청소 :

monday = {'1' : 'clean the counters', '2' : 'upload the files', '3' : 'pick up the garbage'} 
joe = str(random.randint(1, 3)) 
print("Today joe has to do : " + monday[joe]) 
+0

나는 무작위 int를 "stringify"하는 것보다 "intify"하는 것이 더 좋다. @ matt.condit는 모두를 최상으로 유지하며 전체 사전을 제거합니다. –

+0

흠, 그렇게 생각합니다. – aditya

관련 문제