2013-03-28 269 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循环中