2013-03-28 264 views
2

我有我的代碼的困境,首先有一個練習,我不得不寫,將實現以下Python的while循環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 

所有肉汁!

下一個活動:

添加另一個while循環,重複部分a 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

Inner while將在第一次循環後不執行,因爲它將在該點達到100。您必須初始化第一個循環內的num值。 – thavan 2013-03-28 10:16:21

回答

0

你不重置您的任何櫃檯內每個循環過程後。所以,第一次通過時,它計算了該運行的機率和平均值,直到num達到100.第二次通過,當它到達while循環的開始時,它檢查值num:它的已經是 100 ,所以它甚至不會進入循環,只打印前一次的計數。

所以修復它的一種方法是將您的設置num,oddeven移到外部循環內部。

所有這一切,使用while循環在這裏有點奇怪。真的,你應該尋找循環,這對於這個目的來說更好。

+0

太棒了,所有的迴應都很好,但是你的回答向我解釋得最好,所以謝謝,我覺得這是一個很難解決的問題。 – BenniMcBeno 2013-03-28 10:16:09

+0

謝謝。不過,對自己不要這麼努力:對於編程的新手來說,你做得很好。養成像電腦一樣思考的習慣需要一些時間。 – 2013-03-28 10:18:14

+0

謝謝:D,是的,我也會爲此選擇一個for循環,但是我遵循我講座給我的實際操作。 – BenniMcBeno 2013-03-28 11:08:47

0

您需要將外循環內的以下內容:

num = 0 
odd = 0 
even = 0 

否則內部循環的第二和後續的迭代是有效空操作。

2

嘗試更新您的代碼,這種方式(移動次數,奇數,偶數初始化頂點,同時內部):

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循環(啓動while num < 100循環之前)向num(也evenodd)外內的值復位。在第二次,它並不需要在所有執行內環或計算任何隨機的數字,因爲NUM已經是100

+1

也是「有」,而不是「where」或「Where」! – Penfold 2013-03-28 10:04:24

0

只是聲明oddevennum爲0,在第一個while循環的開始。
這樣你每次都會重置這些變量,給你你想要的輸出。

您應該結束了與

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

不要以爲這會做伎倆。檢查你的輸出 – 2013-03-28 10:06:13

+0

是的,做出了有效的更改... – pradyunsg 2013-03-28 10:07:21

0

變量num=100 while循環,這樣你們需要重置終止後NUM = 0在外部while循環中