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

发布时间:2024年01月22日

一、 问题解释:’ '.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的数。

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

文章来源:https://blog.csdn.net/laowang357/article/details/135760146
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。