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

Python str()转int为字符串报TypeError:str对象不可调用

报错原因

报错的核心原因是自定义变量名覆盖了Python内置函数:
你在代码中写了str="TRUE",这行代码执行后,原本指向内置字符串转换函数str()的标识符,被重新绑定为字符串值"TRUE"。后续你执行str(a)试图调用转换函数时,Python识别到str是一个字符串类型的值,字符串本身不能作为函数被调用,因此抛出'str' object is not callable的类型错误。
额外注意:你贴出的代码前几行存在多余缩进,第一行print顶格书写,后续的name1、name2等变量定义前多了4个空格的缩进,运行时还会触发缩进错误。

修复方案
  • 不要使用Python内置函数名作为自定义变量名,将原本命名为str的变量改为其他合法名称,比如true_chars,同步修改所有引用该变量的代码位置,避免覆盖内置方法。
  • 修正代码开头的错误缩进,所有顶格逻辑不要加多余前导空格。
  • 调整分数拼接逻辑,确保最终拼接的是TRUE总计数和LOVE总计数的字符串结果。
  • (可选优化)统计字符计数时先把用户输入的姓名转为大写,避免用户输入小写字母时计数遗漏。

修复后的可运行代码如下:

print("Welcome to the Love Calculator!")
name1 = input("What is your name? \n")
name2 = input("What is their name? \n")
i = 0
true_count_name1 = 0
true_count_name2 = 0
love_count_name1 = 0
love_count_name2 = 0
true_chars = "TRUE"
love_chars = "LOVE"

while i < 4:
    true_count_name1 += name1.upper().count(true_chars[i])
    true_count_name2 += name2.upper().count(true_chars[i])
    love_count_name1 += name1.upper().count(love_chars[i])
    love_count_name2 += name2.upper().count(love_chars[i])
    i += 1

total_true = true_count_name1 + true_count_name2
total_love = love_count_name1 + love_count_name2
print(f"Your score is {str(total_true)}{str(total_love)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:09:25