Python中两个变量相乘报str类型运算错误如何解决?
错误原因
codesters.Sprite实例的ask()方法返回值默认是字符串类型,你代码中所有通过该方法获取的计数、金额、时长类输入,都没有做类型转换,赋值给my_var2、my_var3后仍然是字符串格式。- Python 语法规则中,仅支持「字符串 × 正整数」的运算,作用是将字符串重复指定次数,不支持两个字符串直接相乘,也不支持字符串乘非整数类型的其他值,因此执行两个字符串相乘的逻辑时触发了类型不匹配的报错。
额外说明:你的代码中更早的
AmountPerYear=choice2*365、MoneyPerYear=choice3*365两行也存在相同的类型问题,只是程序顺序执行到第12行时先触发了报错,前面的问题暂时没有暴露。
解决方法
把所有需要参与数值计算的输入值,提前转换为对应的数值类型即可:如果输入内容是计数类的整数,用int()转换;如果是金额、时长这类允许带小数的数值,用float()转换。
修改后的参考代码如下:
sprite = codesters.Sprite("person1") choice = sprite.ask("What is the thing you want to log?") my_var = choice # 次数为整数,转int类型 choice2 = sprite.ask("amount of times you " + my_var + " a day?") my_var2 = int(choice2) AmountPerYear = my_var2 * 365 # 金额允许小数,转float类型 choice3 = sprite.ask("How much money per day") my_var_money = float(choice3) MoneyPerYear = my_var_money * 365 # 时长允许小数,转float类型 Choice3 = sprite.ask("How long does it take to " + my_var + " in seconds") my_var3 = float(Choice3) TimePerDay = my_var3 * my_var2
- 如果需要提升代码健壮性,可额外添加
try-except异常捕获逻辑,处理用户输入非数字内容的场景,避免程序直接崩溃。
内容的提问来源于stack exchange,提问作者PopularAbbyeet
相关产品推荐
相关产品推荐

