第十六届蓝桥杯省赛Python研究生组-C变换数组

  • 考点:基础逻辑
  • 题目描述:
  • 解题思路:
  1. 输入处理
  2. 数据转换
  3. 输出结果
  • 参考代码:
python 复制代码
def main():
    # 1.输入处理
    n = int(input())
    # n = int(sys.stdin.readline().strip())
    a = list(map(int, input().split()))
    m = int(input())

    # 2.数据转换
    for _ in range(m):
        for i in range(n):
           # 当前数字转为二进制,并统计含1的个数
           bit_count = bin(a[i]).count('1') 
           a[i] = a[i] * bit_count

    # 3.输出结果
    print(' '.join(map(str, a)))

if __name__ == '__main__':
    main()
  • 相关函数:
函数 类型 参数 功能 返回值
intpu() 内置函数 prompt:提示字符串 读取一行,自动去掉末尾换行符 \n,返回字符串,速度相对较慢 str
sys.stdin.readline() 系统方法 / 从标准输入快速读取一行,保留末尾的换行符 \n str
str.strip() 字符串方法 chars(可选):指定去除的字符 去除字符串首尾的空白字符(或指定字符) str
str.split(sep=None) 字符串方法 sep:分隔符,默认空白 maxsplit:最大分割次数 按分隔符将字符串切分为列表 list
str.join(iterable) 字符串方法 iterable:字符串组成可迭代对象 以调用该方法的字符串为分隔符,将可迭代对象中的所有元素连接成一个新字符串 str
map(function, iterable) 内置函数 function:要应用的函数 iterable:可迭代对象 将函数依次作用于可迭代对象的每个元素 map object 迭代器
list(iterable) 内置函数 iterable:可迭代对象 将可迭代对象转换为列表 list
bin(x) 内置函数 x:整数 返回整数的二进制字符串表示,前缀为 0b str
str.count(sub) 字符串方法 sub:搜索的子字符串 start/end(可选):范围 统计子字符串在字符串中出现的次数 int
range(stop) 内置函数 stop:结束值(不包含) 生成一个不可变的整数序列 range
range(start,stop,step) 内置函数 start(可选):默认为0 step(可选):步长,默认为1 生成一个不可变的整数序列 range
  • for 循环的多种用法
  1. 直接遍历列表、字符串、元组...

    python 复制代码
    for 元素 in 可迭代对象:
    
    # 示例
    for char in "Python":
        print(char)
  2. 结合 range() 控制次数

    python 复制代码
    for i in range(stop):           # 0 到 stop-1
    for i in range(start, stop):    # start 到 stop-1
    for i in range(start, stop, step): # 带步长
  3. 结合 enumerate() 有索引

    python 复制代码
    for 索引, 元素 in enumerate(列表):
    
    # 示例
    lst = ['a', 'b', 'c']
    
    # 同时获取下标和值
    for idx, val in enumerate(lst):
        print(f"索引 {idx} 对应的是: {val}")
  4. 结合 zip() 并行遍历

    python 复制代码
    for 元素1, 元素2 in zip(列表1, 列表2):
    
    # 示例
    names = ['Alice', 'Bob', 'Charlie']
    scores = [95, 87, 92]
    
    # 同时遍历名字和分数
    for name, score in zip(names, scores):
        print(f"{name} 的分数是 {score}")
  5. 使用 _ 占位符

    python 复制代码
    for _ in range(次数):
    
    # 示例
    # 单纯打印 3 次 "Hello",不关心是第几次
    for _ in range(3):
        print("Hello")
  6. 结合 else 加入判断,else 只会在循环正常结束后执行

    python 复制代码
    for 元素 in 列表:
        if 条件:
            break
    else:
        # 如果循环没有被 break 打断,执行这里
  7. 一行代码

    python 复制代码
    新列表 = [表达式 for 变量 in 可迭代对象 if 条件]
    
    # 示例-需求:生成 0-9 每个数的平方的列表 [0, 1, 4, 9...]
    
    # 普通写法 (3行)
    squares = []
    for i in range(10):
        squares.append(i ** 2)
    
    # 列表推导式写法 (1行)
    squares = [i ** 2 for i in range(10)]
相关推荐
2601_962293246 小时前
Python自动化统计团队工作量并生成可视化仪表盘的脚本方案【指导】
python·数据分析·自动化·可视化·仪表盘
phltxy6 小时前
C语言操作符详解
java·c语言·算法
aqiu1111117 小时前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
2601_962293797 小时前
OCRmyPDF批处理脚本:使用Python自动化复杂OCR任务
python·自动化·批处理脚本·ocrmypdf·ocr任务
辰烨chenye7 小时前
LeetCode Hot 100 题解 · 哈希篇
算法·leetcode·哈希算法
罗西的思考8 小时前
DreamZero 与 DreamDojo:世界模型与策略的分层协同综合分析与对比
人工智能·算法·机器学习
Java后端的Ai之路8 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
玖玥拾8 小时前
LeetCode 219 存在重复元素 II
算法·leetcode·哈希算法·散列表
2601_962077719 小时前
基于Python与NLP的新闻事件信息抽取实战:从NER到时空标准化
python·nlp·transformers·spacy·新闻事件抽取