使用while循环重复生成随机数的函数

时间:2017-06-08 11:40:33

标签: python loops random while-loop append

使用while循环重复某个功能时遇到问题。

我不是美国学生,所以请理解我的英语。 我不知道出了什么问题,希望我能得到一些帮助。 我知道我可以在函数中附加随机数并将其返回。

问题是:

有一个有5个边的骰子,每边都有a,b,c,d,e。如果我得到一个d或者一个e,我再次抛出并记录下来直到得到a,b或c。例如,如果我掷骰子5次,我可以得到:d,e,d,d,a或类似的东西。在我的程序中,我想模拟这个过程。我想要它,以便函数randomnumbers可以生成0~4的随机数。我希望主程序循环通过此函数获取随机数的过程(强制)。然后,我希望主程序检索这些值并使用它来确定这些数字在骰子上的含义(0 = a,1 = b,2 = c,3 = d,4 = e)并将它们附加到单独的名单。最后,我想打印列表中的值,我记录了我得到的值。

我特别需要做以下事情:

  
      
  1. 该函数应该只返回一个随机数,而不是列表
  2.   
  3. 主程序应负责制作列表并打印从函数中检索的值。
  4.   
def randomnumbers():
    r = 0
    import random
    r = random.randrange(0,5)
    return r

abc = ["a", "b", "c", "d", "e"]

List = []
while randomnumbers()>=3:
    List.append(abc[randomnumbers()])

for i in List:
    print i

4 个答案:

答案 0 :(得分:1)

您正在调用您的功能两次。尝试使用:

import random
def randomnumbers():
    r = 0
    r = random.randrange(0,5)
    return r

abc = ["a", "b", "c", "d", "e"]

List = []
while True:
    rand_number = randomnumbers()
    List.append(abc[rand_number])
    if rand_number <3:
        break


for i in List:
    print (i)

答案 1 :(得分:0)

import random                        
def randomnumbers():                 
    r = 0                            
    r = random.randrange(0,5)        
    return r                         

abc = ["a", "b", "c", "d", "e"]      

List = []                            
while True:
    nb = randomnumbers()
    if nb >=3:
     List.append(abc[nb])
    elif not List:
        continue
    else:
        break

for i in List:                       
    print i                          

答案 2 :(得分:0)

这应该可以解决问题!

from random import shuffle
abc = ["a", "b", "c", "d", "e"]
your_list=[]
your_list.extend(abc)
shuffle(your_list)
print(your_list)

输出:

['e', 'd', 'a', 'c', 'b']

好吧,如果你想要一个旧列表中的新列表,其元素按随机顺序改变。

也就是说,如果你想要abc = [&#39; a&#39;,&#39; b&#39;&#39; c&#39;]被改组成[&#39; c&#39;] 39;,&#39;一个&#39;&#39; b&#39] 以随机的方式然后使用 shuffle()

答案 3 :(得分:0)

正如我在评论中提到的,你真的不需要randomnumbers函数来执行此任务。您可以直接致电random.randrange。但我想这是一项家庭作业,你必须拥有randomnumbers功能,所以我已经简化了它。

您还要说,当随机数大于或等于3时,您希望while循环运行,并且您希望该列表至少包含一个字母。这意味着您需要在之后测试随机数的值,以便从abc中选择一个字母并将该字母添加到列表中。你可以这样做:

import random

def randomnumbers():
    return random.randrange(5)

abc = ["a", "b", "c", "d", "e"]

lst = []
while True:
    r = randomnumbers()
    lst.append(abc[r])
    if r < 3:
        break

for i in lst:
    print(i)

此代码在Python 2和Python 3上都能正确运行。

我将输出列表的名称更改为lst。根据{{​​3}}样式指南,变量名应全部为小写,大写或CamelCase的名称用于类名。

FWIW,这里稍微多一点&#34; Pythonic&#34;写这个循环的方法:

lst = []
while True:
    lst.append(random.choice("abcde"))
    if lst[-1] < "d":
        break