1. 大部分社交软件都有好友推荐的功能,当用户A和用户B的共同好友数量超过阀值p时,由系统向用户A推荐用户B。其中共同好友判定方法为:用户A和用户B不是好友,用户C分别是用户A和用户B的好友,则共同好友数量加1。编写Python程序,实现好友推荐功能。运行程序,首先从文件中读取用户id及好友列表后,处理后显示用户之间的关系;再输入推荐目标用户id和阈值p;最后显示向目标用户推荐的好友列表。

(1) 根据如图所示数据,若输入推荐目标用户id为“1”,输入阈值为“4”,则推荐好友为:
(2) 主程序,读取“数据.txt”文件,进行处理后显示用户关系二维表,再输入推荐目标用户id和阈值p,显示向目标用户推荐的好友列表,请在划线处填入合适的代码。

n= 10

sj= ];zj= [];j= 0]

#按行读取"数据.txt"文件,每次读一行文字存入字符串变量line 中

f=open("数据txt")

line=f.readline( )     #读取标题行

line= =f.readline( )

while line:

    sj.append(line.split(" "))     #将字符串以""为间隔分割成多个字符串组成的列表

    line=f.readline( )   #读取下一行

zj = zhengli(sj)

#显示各用户之间关系二维表,代码略

#输入推荐目标用户id和阈值p,显示向目标用户推荐的好友列表

id = int(input("请输入推荐目标用户id: "))

p = int(input("请输入阈值p: "))

   #调用函数进行好友推荐

if len(j) != 0:

    t=0

    print("推荐好友为:",end = "")

    while t < len(tj):

        print(j[t, end ="")

        t=t+ 1

else:

    print("没有推荐好友")

(3) 编写整理数据函数zhengli,根据好友列表,生产关系二维表,请在划线处填入合适的代码。

def zhengli(sj):

    r= [[0 for i in range(n)]for j in range(n)]

    for i in range(n): .

        for j in sj [i][l:]:

            r[i][nt(j)-1]= 1

           

    return r

(4) 编写函数fenxi,根据输入推荐目标用户id和阈值p,显示向目标用户推荐的好友列表,请在划线处填入合适的代码。

def fenxi(id,p):

    res =[]

    for i in range(n):

        c=0

        for j in range(n):

            if i!=id-1 and j!= id-1 and i!=j:

                if

                    c+= 1

        if

            res.append(i+1)

return res

【考点】
过程与自定义函数; 循环结构语句及程序实现; 常用标准函数;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
换一批
1. 叶圣陶杯作文大赛开始了,语文老师收集了参赛同学的作文,作品的文件名按“学号&姓名.docx” 格式提交。学号为 8 位,第 10 位开始为姓名,如“20210902&王源.docx”。老师编写了一段程序以便快速找出哪些同学未提交以便于进行通知处理。在处理时发现,可能会存在“ 20210901+王俊凯.docx”“20210901-王俊凯.docx”两种不当的格式。
(1) 读取文件名并返回,请在划线处填入合适的代码import os

def readname(): #读取某个文件夹内所有文件的文件名

    filepath="pics//"

    #读取到的文件名以字符串的形式,作为元素存储在列表 allname 中

    allname=os.listdir(filepath)  

    #os.listdir()用于返回指定的文件夹包含的文件或文件夹的名字的列表

    return  

(2) 修改文件中的“+”和“-”,请在划线处填入合适的代码

def checkname(name):

    s=""

    for i in name:

        if i=="+" or i=="-":

            s+="&"

        else:

             

    s=s[:-5]     #去掉后四位,即去掉后缀名".docx"

    return s

(3) 主程序,请在划线处填入合适的代码

name=readname()

student=["王俊凯","王源","张明","赵祖一","吴天","顾玲玲","方奔奔","张强"] yes=[];no=[];s=0;result={}

for item in name:

    item=checkname(item)

     

    yes.append(stu) #将学生的姓名加入列表

    s=s+1

for m in student:

    if:

        no.append(m)

(4) 输出结果

result[" 应 提 交 人 数 :"]=len(student)

result[" 已 提 交 人 数 :"]=   ▲    

result["已提交的同学:"]=yes

result["还未提交的同学:"]=no

print(result)

划线处可以填入的代码是            (多选,填字母)

A. len(yes) B. s C. len(no) D. len(name)
综合题 困难