python蓝桥杯备考——字符串小知识点

一、 问题解释:’ '.join(str(k) for k in sorted(set(l)))含义和用法

print(i, 'its factors are', ' '.join(str(k) for k in sorted(set(l))))

' '.join(str(k) for k in sorted(set(factors))) 是一个用于将列表中的元素连接成一个字符串的常见用法。

下面对其含义和用法进行解释:

  1. set(factors): 这一步将列表 factors 转换为集合(set),以去除重复的元素。这样可以确保最终连接的字符串中不会有重复的元素。

  2. sorted(set(factors)): 这一步对去重后的集合进行排序,以确保最终连接的字符串中的元素按照升序排列。

  3. (str(k) for k in sorted(set(factors))): 这是一个生成器表达式,用于将集合中的每个元素转换为字符串。通过遍历排序后的集合,将每个元素转换为字符串。

  4. ' '.join(...): 这是一个字符串的方法,用于将可迭代对象中的元素连接成一个字符串,每个元素之间使用指定的分隔符进行分隔。在这里,我们使用空格作为分隔符。

综合起来,' '.join(str(k) for k in sorted(set(factors))) 的作用是将列表 factors 中的元素去重、排序,并使用空格将它们连接成一个字符串。

例如,如果 factors[2, 1, 3],那么 sorted(set(factors)) 将得到 [1, 2, 3],然后通过 ' '.join(...) 将其连接成字符串 '1 2 3'

二、练习

题目:完数的判断

时间限制:
1s
内存限制:
128MB
题目描述:
一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。
例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子
输入描述:
N
输出描述:
? its factors are ? ? ?
样例输入:
1000
样例输出:
6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
496 its factors are 1 2 4 8 16 31 62 124 248
答案:

from math import sqrt
 
N = int(input())
for i in range(2, N):
    s = 1
    l = [1]
    for j in range(2, int(sqrt(i)) + 1):
        if s > i:
            break  # 提前结束循环,因为sqrt(i)
        if i % j == 0:
            l.append(j)
            l.append(int(i / j))
            s = s + j + int(i / j)
    if s == i:
        print("%d its factors are %s" % (i, ' '.join(str(num) for num in sorted(set(l)))))

补充知识点:

sqrt(i)是求i的平方根

在循环中,我们只需要遍历从2到int(sqrt(i))+1的数。

这种做法的好处是可以减少循环的次数,从而提高程序的效率。

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王 歪歪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值