刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

38.找缺失数
在一个学校的年度校园活动中,组织者需要为参与者分配不同的编号,以便进行抽奖和其他活动。他们决定使用长度为n-1的列表a来存储参与者的编号,这些编号是从1到n的整数,且没有重复。现在,他们需要找出在区间[1,n]范围内没有出现在列表a中的那个整数,以便为这个编号进行特别的奖励。如当n=5时,a[0]=3,a[1]=4,a[2]=1,a[3]=5时,列表a中缺失的数为2。
python代码如下,请在划线处填上合适的代码.
from random import randint
n=int(input("请输入一个整数n:"))
a=[]
c=1
while c<n:
x=randint(1,n)
if ① :
​ a.append(x)
​ ②
s=n*(n+1)//2 #s得到1~n的累加和
for i in range(n-1):
​ ③
print(a)
print("列表中缺失的数为:",s)

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

这是一个找缺失数的问题。首先,我们需要生成从1到n的随机数并存储在列表a中,但我们要确保每个数只出现一次。然后,我们计算从1到n的累加和s。接下来,我们需要找到在列表a中未出现的数字,即缺失的数字。

对于划线处①,我们需要检查随机数x是否已经在列表a中,如果不在,则将其添加到列表a中。这可以通过简单的条件判断实现:if x not in a:

对于划线处②,我们在循环中需要逐步增加c的值以确保我们生成n个随机数。因此,这里应该填写:c += 1

对于划线处③,我们需要找到缺失的数字。一种方法是计算从1到n的累加和s,然后减去列表a中所有数字的总和。这可以通过missing_num = s - sum(a)来实现。另一种方法是通过集合的差集运算来找到缺失的数字:missing_num = set(range(1, n+1)) - set(a)。这两种方法都可以得到正确的结果。

所以,完整的代码应该是这样的:

from random import randint  
n=int(input("请输入一个整数n:"))  
a=[]  
c=1  
while c<n:  
    x=randint(1,n)  
    if x not in a:  # 检查随机数x是否已经在列表a中  
        a.append(x)  
    c += 1  # 逐步增加c的值  
s=n*(n+1)//2 #s得到1~n的累加和  
missing_num = s - sum(a) # 或者使用集合set求差集的方式:missing_num = set(range(1, n+1)) - set(a)
print(a)  
print("列表中缺失的数为:", missing_num)
创作类型:
原创

本文链接:38.找缺失数在一个学校的年度校园活动中,组织者需要为参与者分配不同的编号,以便进行抽奖和其他活动。

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share