2013-10-04 2 views
0

나는 주사위를 굴리는 동안 for 루프 대신 while 루프를 사용하려고합니다. 나는 elif이 옳다고 생각하지 않지만이 안에서 while 루프를 사용하는 방법을 알 수는 없습니다.주사위를 굴리는 동안 루프가 반복되는 동안

import random 

def rolldiewhileloop(): 
    number = 10 
    one = 0 
    two = 0 
    three = 0 
    four = 0 
    five = 0 
    six = 0 
    while number > 0: 
     flip = int(random.random() * 6) 
     if(flip == 1): 
      one = one + 1 
     elif flip == 2: 
      two = two + 1 
     elif flip == 3: 
      three = three + 1 
     elif flip == 4: 
      four = four + 1 
     elif flip == 5: 
      five = five + 1 
     elif flip == 6: 
      six = six + 1 

    return [one, two, three, four, five, six] 

답변

1

당신은 while 루프의 각 패스 수를 감소해야 이것은 내가 지금까지있는 것입니다. while 루프의 마지막 줄에 number -= 1을 넣습니다.

6

현재 while 루프에서는 number의 값을 변경하지 않으므로 무한 루프가됩니다. 당신은 10에서 시작 number 때까지 반복하여 제로보다 작거나 같은 때문에, 당신은 아마 각 반복에 의해 감소시키는해야합니다 number -= 1number = number - 1에 해당

number = 10 
while number > 0: 
    number -= 1 
    # the rest of the loop 

하는 것으로.

random.random()의 결과를 곱하는 대신 random.randint(1, 6)을 사용하는 것이 좋습니다. 또한 배열을 반환하기 때문에 각 가능성에 대해 별도의 변수를 만드는 대신 결과의 목록을 만들고 수정하는 것이 더 Pythonic이 될 것입니다. 예 :

def rolldiewhileloop(): 
    results = [0] * 6 
    number = 10 
    while number > 0: 
     number -= 1 
     flip = random.randint(1, 6) 
     results[flip-1] += 1 
    return results 
+1

더 나은 디자인을 제안하는 +1; 변수 이름에 숫자가 2 개 이상있는 변수가 있으면 거의 확실하게 목록을 원합니다. – geoffspear

+0

어디서나'number'를 사용하지 않으므로'for _ in xrange (10)'을 사용하지 않으시겠습니까? –

+1

@kroolik 질문에 특별히 'for'대신 'while'을 사용하려고합니다. 나는 그들이'for '로 이것을하는 법을 이미 알고 있다고 가정하고 있으며, 학습 경험으로'while'을 사용하고 있거나 숙제를하기위한 요구 사항이기 때문에. –

관련 문제