我想出了这个解决方案来计算用户定义的骰子侧面质数的概率。但出于某种原因,它不喜欢只包含数字3。有人能告诉我为什么它讨厌3号吗?
输出如下:[2, 5, 7, 11, 13, 17, 19, 23] --> Missing 3!
def cal_probability (event, sample_space):
return len(event)/ len(sample_space)
def cal_prime_numbers (s_space):
count = 0
prime_nums = []
for num in s_space:
for i in s_space:
if num % i == 0:
count += 1
else:
continue
if count == 2:
prime_nums.append (num)
else:
count = 0
continue
return prime_nums
if __name__ == '__main__':
sides = input ('Enter the number of sides: ')
sample_space = list (range (1, int(sides)+1))
print (sample_space)
event = cal_prime_numbers (sample_space)
print (event)
p = cal_probability (event, sample_space)
print ('The probabilty of prime numbers to happen in {0} sides die is: {1}%'.format (sides, p*100))然而,我期望:[2, 3, 5, 7, 11, 13, 17, 19, 23]
发布于 2019-02-12 01:27:39
当你找到一个素数时,你不能在这里重置计数:
if count == 2:
prime_nums.append (num)
else:
count = 0
continue这意味着你不能在一行中找到两个素数。这个杠杆会影响3,因为2是唯一的质数。无论你是否找到一个素数来修复它,只要将count设置回0即可。您可以删除else,并且不需要continue
if count == 2:
prime_nums.append (num)
count = 0您也不需要在内部for循环中使用else或continue,因为它与正常的循环行为没有任何不同:
def cal_prime_numbers (s_space):
count = 0
prime_nums = []
for num in s_space:
for i in s_space:
if num % i == 0:
count += 1
if count == 2:
prime_nums.append (num)
count = 0
return prime_numshttps://stackoverflow.com/questions/54635882
复制相似问题