2013-03-28 2 views
2

내가 그에게 위해 파일을 만들고 다음파이썬 while 루프 내부에있는 동안 루프

운동

을 달성 써야했다 운동이 있었다의 내가 먼저, 내 코드와 딜레마 데 이 운동을 완료하십시오. 100 개의 난수 (1-1000의 범위)를 생성하고 그 난수 중 몇 개가 고르고 얼마나 많은 수가 홀수인지 계산을 유지하는 프로그램을 작성하십시오. 아래의 샘플 출력과 같이 결과를 화면에 표시하십시오. 힌트 : while 루프를 사용하여 100 번 반복하십시오.

내 결과 :

import random 
num = 0 
odd = 0 
even = 0 

while num < 100: 
    random.randint(1,1000) 
    num = num + 1 
    #print(num) 
    if random.randint(1,1000)%2==0: 
     even = even + 1 
    else: 
     odd = odd + 1 

print ("Out of 100 Random Numbers,",even,"were even and",odd,"were Odd") 

출력 :

Out of 100 Random Numbers, 50 were even and 50 were Odd 

모든 그레이비!

다음 활동

부를 10 회 반복하는 동안 다른 루프를 추가한다. 아래의 샘플 출력과 같이 결과를 화면에 표시하십시오.

Out of 100 random numbers, 56 were odd, and 44 were even. 
Out of 100 random numbers, 60 were odd, and 40 were even. 
Out of 100 random numbers, 47 were odd, and 53 were even. 
Out of 100 random numbers, 54 were odd, and 46 were even. 
Out of 100 random numbers, 48 were odd, and 52 were even. 
Out of 100 random numbers, 53 were odd, and 47 were even. 
Out of 100 random numbers, 46 were odd, and 54 were even. 
Out of 100 random numbers, 52 were odd, and 48 were even. 
Out of 100 random numbers, 53 were odd, and 47 were even. 

그래서 내가 쓴 :

import random 
num = 0 
odd = 0 
even = 0 
loop = 0 


while loop < 10: 
    loop = loop +1 

    while num < 100: 
     num = num + 1 
     rand = random.randint(1,1000) 
     #print(num) 
     if rand%2==0: 
      even = even + 1 
     else: 
      odd = odd + 1 
    result = print ("Out of 100 Random Numbers,",even,"were even and",odd,"were Odd") 

이 출력 결과이 같은 출력으로

당신의

Out of 100 Random Numbers, 50 were even and 50 were Odd 
Out of 100 Random Numbers, 50 were even and 50 were Odd 
Out of 100 Random Numbers, 50 were even and 50 were Odd 
Out of 100 Random Numbers, 50 were even and 50 were Odd 
Out of 100 Random Numbers, 50 were even and 50 were Odd 
Out of 100 Random Numbers, 50 were even and 50 were Odd 
Out of 100 Random Numbers, 50 were even and 50 were Odd 
Out of 100 Random Numbers, 50 were even and 50 were Odd 
Out of 100 Random Numbers, 50 were even and 50 were Odd 
Out of 100 Random Numbers, 50 were even and 50 were Odd 

수있는 하나의 좋은 프로그래머 나 이유에 대한 설명 나는 그 결과를 얻고 있고 그리고/또는 운동을 위해 기대 결과를 얻는 코드를 수정한다.

왜 그들이 작동하지 않으며 어떻게 고쳐야하는지에 대한 설명은 그들이 말하는 것을 알고 있기 때문에 하루에 먹을 물고기를 먹으면 생선을 먹고 평생 먹을 것을 가르쳐줍니다.

감사합니다.

+0

내부는 첫 번째 루프 이후에 실행되지 않으며 그 시점에서 100에 도달합니다. 첫 번째 루프 내부에서 num 값을 초기화해야합니다. – thavan

답변

0

. 첫 번째로는 num이 100이 될 때까지 실행 횟수와 확률을 계산합니다. 두 번째로 while 루프의 시작 부분에 도달하면 num의 값을 확인합니다 : 이미 100입니다. 따라서 루프에 들어 가지 않고 이전 시간의 카운트를 인쇄합니다.

외부 루프 내부에 num, oddeven의 설정을 이동하는 것이 좋습니다.

while 루프를 사용하는 것은 약간 이상합니다. 정말로이 목적을 위해 더 나은 루프를 찾아야합니다.

+0

위대한, 모든 응답은 좋았다. 그러나 당신의 응답은 나에게 그것을 가장 잘 설명했다. 그래서 고마워, 나는 첫번째 장소에서 그것을 이해하지 않는 것을 느낀다. – BenniMcBeno

+0

감사합니다. 그래도 자신에게 열심히하지 마십시오. 프로그래밍에 신참을 위해 잘하고 있습니다. 컴퓨터처럼 생각하는 습관을 갖기까지 시간이 걸립니다. –

+0

고마워요. D, 예. 그렇다고해서 for 루프를 선택했을 수도 있습니다. 그러나 강의에서 준 실습을 따르고 있습니다. – BenniMcBeno

0

당신은 외부 루프 내에서 다음으로 이동해야합니다 내부 루프의

num = 0 
odd = 0 
even = 0 

그렇지 않으면 두 번째 이후 반복 효과적으로 어떤 작전 없습니다.

2

봅니다 (상단 동안 내부 이동 NUM, 홀수, 심지어 초기화) 코드 이런 식으로 업데이트 : 당신은 내부 루프의 각 패스 후 카운터의 재설정되지 않습니다

from random import randint 

loop = 0 

while loop < 10: 
    num = 0 
    odd = 0 
    even = 0 
    loop += 1 

    while num < 100: 
     num += 1 
     rand = randint(1, 1000) 
     if rand % 2 == 0: 
      even += 1 
     else: 
      odd += 1 
    print "Out of 100 Random Numbers, {0} where even and {1} where Odd".format(even, odd) 
0

당신은 루프 동안합니다 (while num < 100 루프를 시작하기 전에) 외부 내부 num (도 evenodd)의 값을 다시 잊어 버린. NUM이 이미 있기 때문에 두 번째 시간, 그것은 루프 동안 처음의 시작, 100

+1

"was", "where"또는 "Where"! – Penfold

0

그냥 odd, even, num 0으로 선언 전혀 난수를 내부 루프를 실행하거나 계산할 필요가 없습니다.
그런 식으로 이러한 변수를 매번 재설정하여 원하는 결과를 얻을 수 있습니다.

당신은

while loop < 10: 
    loop = loop +1 
    num = even = odd = 0 # here 
    while num < 100: 
     num = num + 1 
     rand = random.randint(1,1000) 
     #print(num) 
     if rand % 2 == 0: 
      even = even + 1 
     else: 
      odd = odd + 1 
     # grammar 
    print ("Out of 100 Random Numbers,",even,"were even and",odd,"were Odd") 

생성 된 번호의 총 수를 인쇄하는 또 다른 버전

loop = 0 
even = odd = 0 # change 1 
while loop < 10: 
    loop = loop +1 
    num = 0 # change 2 
    while num < 100: 
     num = num + 1 
     rand = random.randint(1,1000) 
     #print(num) 
     if rand % 2 == 0: 
      even = even + 1 
     else: 
      odd = odd + 1 
     # grammar 
    print ("Out of", loop*100,"Random Numbers,",even,"were even and",odd,"were Odd") 
+0

이것이 트릭을 할 것이라고 생각하지 마십시오 .. 출력을 확인하십시오 –

+0

예, 유효 변경했습니다 ... – pradyunsg

0

변수 num=100 루프가 너무 유 재설정해야 동안의 종료 후 NUM = 끝낼한다 0 while with outer while 루프