2014-04-28 1 views
0

좋아, 더 이상 질문 :시퀀스의 요소를 수정하지 않습니다 (파이썬 3.4)이 후

import random 

lotto = [0, 0, 0, 0, 0, 0, 0, 0] 
index = 0 

while index <= 6: 
    lotto[index] = random.randrange(1, 9) 
    index = index + 1 
    print("Lotto number",index,"is",lotto[index],"!") 

나는이 시퀀스 요소가 수정되지 않습니다 이유와 손쉽게 찾을 수없는 것. 인덱스와 시퀀스가 ​​제대로 처리되지만 lotto[index] = random.randrange(1, 9) 행은 쓸모없는 것처럼 보입니다. 시퀀스에서 아무 것도 변경하지 않습니다. 나는 내가 뭔가를 놓치고 있다는 것을 알고있다. 그러나 나는 오랫동안이 물건을 꼼짝 않고 바라보고 있었고, 내가 뭘 망쳤는지 알 수 없다. 요소를 변경 했으므로 모든 요소를 ​​올바르게 출력하므로 시퀀스 요소가 변경되지 않습니다. 할프?

+0

처럼되지 배열을 지능형리스트를 사용하여 새 목록을 만들 수 있습니다. – smci

답변

3

인쇄하는 동안 항상 다음 요소를 참조합니다. 그냥 이런 식으로 뭔가를 인쇄 할 때

print("Lotto number",index,"is",lotto[index],"!") 
index = index + 1 

, 당신은 그 외에도이

print("Lotto number {} is {} !".format(index, lotto[index])) 

처럼 format 기능을 사용할 수있는이 같은 증가 라인 인쇄 라인을 교체, 당신은 루프를 사용할 수 있습니다 이

for index in range(7): 
    lotto[index] = random.randrange(1, 9) 
    print("Lotto number", index, "is", lotto[index], "!") 

range 기능 등 range 함수가 반복 될 때마다 0부터 6 번에 하나의 값을 제공한다.

는 더 나은, 당신은 * 순서 * (구체적으로는 * 목록 *)를 불렀다 파이썬에서이

lotto = [random.randrange(1, 9) for index in range(7)] 
+0

굉장! 인쇄술에서 일종의 계산으로 필요했기 때문에 색인에주의를 기울이지 않았습니다. 고마워. – Darksider13

+1

안녕하세요 @ user3579841이 답변으로 문제가 해결되면 체크 표시를 클릭하여 [수락] (http://meta.stackexchange.com/q/5234/179419)을 고려하십시오. 이는 해결책을 찾았으며 응답자와 자신에게 어느 정도의 평판을 제공한다는 것을 더 넓은 커뮤니티에 나타냅니다. 이를 수행 할 의무는 없습니다. – Lafexlos

+0

@Lafexlos 고맙습니다. :) – thefourtheye