使用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)并将它们附加到单独的名单。最后,我想打印列表中的值,我记录了我得到的值。
我特别需要做以下事情:
- 该函数应该只返回一个随机数,而不是列表
- 主程序应负责制作列表并打印从函数中检索的值。
醇>
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
答案 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