Python如何将列表每个元素与其位置相乘?附示例与代码排查
现有代码问题梳理
input()函数返回的是字符串类型,既无法直接执行数字乘法运算,也不能修改内部元素(Python字符串为不可变类型,直接对下标位置赋值会抛出异常)- 循环范围设置为
range(1, len(base_id_num))会遗漏最后一个元素:range的右边界为开区间,若输入长度为7,该循环只会执行6次,漏掉第7位的计算 - 位置计数逻辑错误:需求要求位置从1开始计算,但代码中用作乘数的
n初始值为0,第一位元素会被乘0,和预期逻辑不符 - 缺少求和逻辑:需求最终要得到所有乘积的总和,但现有代码仅尝试修改原序列元素,未做累加计算,打印的也是原序列而非总和结果
正确实现代码
普通易读版本:
base_id_num = input() total = 0 # 遍历同时获取索引和对应字符 for idx, char in enumerate(base_id_num): # 字符转整数,乘(索引+1对应从1开始的位置) product = int(char) * (idx + 1) total += product print(total)
简洁生成器表达式版本:
base_id_num = input() total = sum(int(char) * (i+1) for i, char in enumerate(base_id_num)) print(total)
输入2452834测试,输出结果为119,和预期计算结果一致。
内容的提问来源于stack exchange,提问作者HOODIE NICK
相关产品推荐
相关产品推荐

