我真的是python的初学者,而且我正在分析投掷硬币的任务。投掷数量为1000
,结果可能为1
,2
。我要求创建包含相同结果序列的行(例如1 1 1 1 1 1 1 1
然后2 2 2 2 2
,..)并给出最长出现序列的长度。
from numpy.random import randint, seed
seed(0)
for n in range(1000):
r = randint(1,3)
print(r)
给了我一个报告结果如下的专栏
1
2
1
1
2
1
1
我无法找到合适的代码来创建相同结果的那些行序列。
答案 0 :(得分:0)
您正在打印for循环的每次迭代的结果。
一个简单的解决方案是创建2个列表,每个列表包含每次出现的1或2:
list1 = []
list2 = []
在for循环中,您可以使用list.append方法将r的值添加到相应的列表中:
for n in range(1000):
r = randint(1, 3)
if r == 1:
list1.append(r)
else:
list2.append(r)
这样,list1包含数字1的每次出现,而list2包含所有数字2。
您现在可以打印两个列表,并使用len()来获取每个列表中的元素数量。
答案 1 :(得分:0)
试试这个:
count1 = 0
count2 = 0
for n in range(1000):
r = randint(1, 3)
if r == 1:
count1 += 1
elif r == 2:
count2 += 1
if count1 > count2:
print('1'*count1)
print('2'*count2)
print('Longest sequence is of 1\'s, with %s occurences' %count1)
else:
print('1'*count1)
print('2'*count2)
print('Longest sequence is of 2\'s, with %s occurences' %count2)