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

如何解决计算列表字符串ASCII值之和时的TypeError错误

解决列表字符串替换为ASCII值之和的问题

嘿,我来帮你搞定这个代码问题!先拆解下你代码里的几个小问题,然后给你修正后的方案:

你的代码里的问题点:

  • 遍历字符的方式错误:for j in list1[i]这里,i是列表里的字符串元素(比如'Ganga'),不是整数索引,直接写for j in i就能遍历这个字符串里的每个字符了。
  • 总和变量初始化位置不对:你把sum1 = 0放在了外层循环外面,这样每次循环都会累加之前的总和,应该把它放到外层循环里面,每次处理新字符串时重置为0。
  • 列表没有replace方法:Python的list类型没有replace()方法,要修改列表元素,要么通过索引直接赋值,要么生成一个新列表。
  • 多余的类型转换:ord(int(j))完全没必要,j本身就是字符,直接用ord(j)就能获取它的ASCII值。

修正后的代码(两种方式)

方式一:用列表推导式(简洁推荐)

这是Python里最简洁的写法,一行搞定:

list1 = ['Ganga', 'Narmada', 'Kaveri', 'Tapi', 'Yamuna']
list1 = [sum(ord(char) for char in s) for s in list1]
print(list1)

运行后会输出:[539, 750, 650, 417, 673](每个字符串的ASCII值总和)

方式二:修改原循环(适合理解过程)

如果你想保留原来的循环结构,调整后是这样:

list1 = ['Ganga', 'Narmada', 'Kaveri', 'Tapi', 'Yamuna']
# 用enumerate同时拿到索引和对应的字符串
for idx, s in enumerate(list1):
    sum1 = 0
    # 直接遍历字符串里的每个字符
    for char in s:
        sum1 += ord(char)
    # 通过索引替换原列表的元素
    list1[idx] = sum1
print(list1)

这样运行后就能得到你想要的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:22:48