You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何从后往前按位置权重计算数字字符串各位乘积总和

问题原因

你现有代码中使用national.index(n)获取索引的方式存在缺陷,当字符串内有重复字符时,该方法只会返回字符第一次出现的位置,无法拿到当前遍历字符的真实索引,所以计算结果不符合预期。


正确实现代码

写法1:基础循环实现(易理解)

national = '2080880579'
result = 0
for idx, char in enumerate(national):
    weight = 10 - idx
    # 若要和示例计算逻辑一致仅算到权重2,保留以下判断即可
    if weight < 2:
        break
    result += int(char) * weight
print(result) # 输出201

写法2:简洁生成器表达式

national = '2080880579'
result = sum(int(char) * (10 - idx) for idx, char in enumerate(national) if 10 - idx >= 2)
print(result) # 输出201

逻辑说明

  • enumerate()函数可以在遍历字符串的同时拿到每个字符的索引(从0开始计数)和字符本身,完美规避了重复字符索引匹配错误的问题。
  • 权重计算规则为第一位(索引0)对应10,因此直接用10 - 索引值就能得到对应位的权重,和需求完全匹配。
  • 如果你需要按“依此类推”的规则计算到最后一位(权重1),去掉代码里的判断条件即可,最终输出结果为210。

内容的提问来源于stack exchange,提问作者Saeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:18:04