第十六届蓝桥杯省赛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)]
相关推荐
倒头就睡的小比特6 天前
算法竞赛C++常用的STL
c++·算法
默_笙6 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!6 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
qq_426003966 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫6 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技6 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读6 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
猎头南楼6 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
只睡四小时6 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
旖旎夜光6 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控