2013-11-26 2 views
0

아래 코드에 대한 설명을 도와 줄 누군가가 필요합니다. 솔루션을 살펴본 결과 숫자가 실제로 계산되는 시간의 추측을 나타내는 지 알아내는 데 다소 시간이 걸렸습니다. 그러나, 파이썬에서는 매우 약합니다.파이썬 : 알파벳 수

누군가 알파벳 문자 수가 숫자 목록에 묶여있는 방법을 설명해 주시겠습니까?

line = 'abcdef' 
count = [3,4,7,1,2,5] 
index = 0 
while index < len(line): 
    print(count[index], end=' ') 
    for k in range(0,count[index]): 
    print(line[index],end='') 
    print() 
    index = index + 1 

OUTPUT

3 aaa 
4 bbbb 
7 ccccccc 
1 d 
2 ee 
5 fffff 
+1

이런 경우에는 [this one] (http://pythontutor.com/visualize.html#code=line+%3D+'abcdef'%0Acount+%)와 같은 대화 형 시각화 프로그램에서 실행 해보십시오. 3D + % 5B3,4,7,1,2,5 % 5D % 0Aindex + % 3D + 0 % 0Awhile + 인덱스 + % 3C + len (행) % 3A % 0A ++ print (% 5Bindex % 5D, + end % 3D 카운트 % 0A ++ + + k + in + 범위 (0, 백분율 % 5Bindex % 5D) % 3A % 0A ++++ print (행 % 5Bindex % 5D, 끝 % 3D '') % 0A ++ & heapPrimitives = false & drawParentPointers = false & textReferences = false & showOnlyOutputs = false & py = 3 & curInstr = 0) print() % 0A ++ 인덱스 + % 3D + 인덱스 + % 2B + – abarnert

+0

감사합니다. 어떻게 든 유용합니다. 그러나 명시된 바와 같이 프로그래밍은 내 힘이 아닙니다. – Macrick

답변

3

루프 모두 linecount에 그 인덱스를 사용하고 0len(line) - 1 간의 인덱스를 생성한다. 따라서 count은 같은 길이가 될 것으로 예상됩니다.

통해이 다음과 같이하십시오 len(line)보다 작은

  1. 만큼 index으로, 루핑 유지한다.
  2. 인쇄 count[index] 공백 뒤에 줄 바꿈이 없습니다.
  3. 루프 0에서 count[index] - 1까지의 루프. 그러면 count[index] 번 반복됩니다. 이 for 루프에서는 줄 바꿈없이 line[index]을 인쇄하면 문자가 count[index] 번 인쇄됩니다.
  4. 새 줄을 인쇄하십시오.
  5. 증분 index입니다.

첫번째 반복, indexlen(line)보다 작은 0이다. line[0]a이면 count[0]이 3이므로 3을 인쇄 한 후 a을 3 번 인쇄합니다.

두 번째 반복 indexlen(line)보다 작은 1입니다. line[1]b이고 count[1]은 4이므로 4을 인쇄 한 후 b을 4 번 인쇄합니다.

index6 인 시점에서 while 루프가 끝납니다. 한 번에 그것을 통해 하나의 반복을 갈 수

for char, c in zip(line, count): 
    print(c, c * char) 
+0

char, c : zip (줄, 개수) : -> zip 함수는? print (c, c * char) -> 나는 곱셈이라고 알고 있지만 정확히 무엇을 수행하고 있는지 알고 있습니다. 문자 수입니까? – Macrick

+0

@Macrick : 문자열에 숫자를 곱하면 반복되는 문자열이됩니다. ''a * '는''aaa''입니다. –

1

:

코드

는 단순화 할 수

  • 1 반복 : index이 0, count[0]3입니다 line[0]'a'입니다. 그래서 우리는 3를 인쇄 한 다음 'a' 3 회
  • 2 반복 인쇄 : indexline[1]'b'입니다 count[1]4이며, 1입니다.그래서 우리는 4을 인쇄 한 다음 'b'을 4 번 인쇄하십시오.

무슨 일이 일어나고 있는지 충분히 알기를 바랍니다.