我在'j = j + 1'行中收到无效的语法错误。即使我尝试删除此行,它也说行“ for list1中的k:”无效。知道为什么吗?因为该分配需要大量的迭代,所以我认为无法删除它,但是该行没有问题。
供参考,分配如下:给一个房间中的n个人一组,两个或两个以上有相同生日的概率是多少?可以通过仿真确定该问题的答案。使用提供给您的启动模板,完成名为calc生日概率的函数,该函数将n作为输入n,并返回n个人中有两个或两个以上人具有相同生日的概率。为此,该函数应创建一个大小为n的列表,并随机生成n个生日,范围在1到365之间(包括端点1和365)。然后,该函数应检查n个生日中是否有相同的。函数应执行此实验106次,并计算两个或多个人具有相同生日的时间比例。
import random
def calc_birthday_probability (num_people):
random.seed (2020) # Don't change this value
num_trials = 2
list1 = []
repeats = 0
for i in range(0,num_trials+1):
for j in range (0,num_people+1):
(list1.append(random.randint (1,365))
j = j+1
for k in list1:
if list1.count(k)>1:
repeats +=1
k = k+1
else:
repeats = repeats+0
del list1[:]
i = i+1
print(repeats)
prob = repeats/(num_trials*num_people)
return prob
print(calc_birthday_probability(2))
'''
您的电话
(list1.append(random.randint (1,365))
以一个从未关闭的括号开始,抬起了SyntaxError
。您的代码应为:
list1.append(random.randint (1,365))