- 考点:基础逻辑
- 题目描述:


- 解题思路:
- 输入处理
- 数据转换
- 输出结果
- 参考代码:
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 循环的多种用法
-
直接遍历列表、字符串、元组...
pythonfor 元素 in 可迭代对象: # 示例 for char in "Python": print(char) -
结合 range() 控制次数
pythonfor i in range(stop): # 0 到 stop-1 for i in range(start, stop): # start 到 stop-1 for i in range(start, stop, step): # 带步长 -
结合 enumerate() 有索引
pythonfor 索引, 元素 in enumerate(列表): # 示例 lst = ['a', 'b', 'c'] # 同时获取下标和值 for idx, val in enumerate(lst): print(f"索引 {idx} 对应的是: {val}") -
结合 zip() 并行遍历
pythonfor 元素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}") -
使用 _ 占位符
pythonfor _ in range(次数): # 示例 # 单纯打印 3 次 "Hello",不关心是第几次 for _ in range(3): print("Hello") -
结合 else 加入判断,else 只会在循环正常结束后执行
pythonfor 元素 in 列表: if 条件: break else: # 如果循环没有被 break 打断,执行这里 -
一行代码
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)]