探秘“悄悄关注”:用代码挖掘可能的“小秘密”
在当今的社交媒体时代,关注与点赞是我们日常社交互动中不可或缺的部分。然而,你是否想过,那些被你“悄悄关注”的人,可能正隐藏在你的点赞行为中?今天,我们就来通过一段代码,揭开那些可能被你“悄悄关注”的人。
问题背景:悄悄关注的奥秘
新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。
输入与输出:数据的解读
我们的任务是根据用户的关注列表和点赞信息,找出那些可能被“悄悄关注”的人。具体来说:
输入格式
输入分为两部分。第一部分是用户的关注列表,以一个正整数 N 开头,表示关注人数,随后是 N 个用户 ID,每个 ID
是一个由数字和英文字母组成的 4 位字符串。第二部分是点赞信息,首先是一个正整数 M,表示点赞次数,随后是 M 行,每行包含一个用户 ID
和对该用户的点赞次数。
输出格式
我们需要找出那些点赞次数大于平均点赞数且不在关注列表中的用户,按用户 ID 的字母顺序输出。如果没有符合条件的用户,则输出“Bing Mei
You”。
代码实现:逻辑剖析
接下来,让我们看看如何通过代码实现这一功能。
# 读关注列表
data = input().split()
n = int(data[0])
follow_set = set(data[1:])
# 读点赞信息
m = int(input())
like_dict = {}
total_likes = 0
for _ in range(m):
user, count = input().split()
count = int(count)
like_dict[user] = count
total_likes += count
# 计算平均点赞数
if m == 0:
avg_likes = 0
else:
avg_likes = total_likes / m
# 找可能悄悄关注的人
suspicious = []
for user, count in like_dict.items():
if count > avg_likes and user not in follow_set:
suspicious.append(user)
# 输出
if suspicious:
suspicious.sort()
for user in suspicious:
print(user)
else:
print("Bing Mei You")
代码解析
- 读取关注列表:我们首先读取用户的关注列表,将其存储在一个集合 follow_set 中,这样可以方便后续的查找操作。
- 读取点赞信息:接下来,我们读取点赞信息,将其存储在一个字典 like_dict 中,同时计算总点赞数 total_likes。
- 计算平均点赞数:通过总点赞数除以点赞次数 M,我们得到平均点赞数 avg_likes。筛选可能的“悄悄关注”对象:遍历点赞信息,找出那些点赞次数大于平均点赞数且不在关注列表中的用户,并将它们存储在列表 suspicious中。
- 输出结果:如果存在符合条件的用户,按字母顺序输出;否则,输出“Bing Mei You”。 示例分析
示例 1
输入:
10 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao
8
Magi 50
Pota 30
LLao 3
Ammy 48
Dave 15
GAO3 31
Zoro 1
Cath 60
输出:
Ammy
Cath
Pota
分析:平均点赞数为 8
50+30+3+48+15+31+1+60=30.625。点赞次数大于 30.625 且不在关注列表中的用户有 Ammy、Cath 和 Pota,按字母顺序输出。
示例 2
输入:
11 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao Pota
7
Magi 50
Pota 30
LLao 48
Ammy 3
Dave 15
GAO3 31
Zoro 29
输出:
Bing Mei You
分析:平均点赞数为 7
50+30+48+3+15+31+29=30。没有用户点赞次数大于 30 且不在关注列表中,因此输出“Bing Mei You”。
总结
通过这段代码,我们成功地实现了对“悄悄关注”对象的挖掘。虽然这种方法并不能完全确定某人是否被“悄悄关注”,但它为我们提供了一种基于点赞行为的推测方式。