Python算术题代码报TypeError: can only concatenate str (not "float") to str如何解决
问题分析
- 直接报错原因:
numUtilisateur是float类型,你在执行print(numero + "+" + numero2 + numUtilisateur)时直接将float和字符串拼接,类型不匹配触发TypeError。 - 看不到待计算数字的原因:你把用户输入逻辑放在了算式打印之前,程序还没输出题目就先弹出了输入框,自然只能看到等号。
- 其他逻辑错误:
count+1没有赋值给变量,count永远为0,循环不会按预期执行10次,需修改为count += 1- 你提前将
numero和numero2转为了字符串,后续计算正确答案时numero + numero2会执行字符串拼接而非数值相加,比如随机数为2和3时会得到"23"而非正确结果5 - while循环内添加了break,第一次循环结束就直接跳出,根本无法执行10次
- 答案对比逻辑写在循环外,只会判断最后一次答题结果,之前的答题结果都不会统计
total+1同样没有赋值给变量,得分不会累加,需修改为total += 1- 原代码中
reponse = (numero + numero2)后判断reponse == (numero + numero2)是恒成立的无效判断,完全起不到校验用户答案的作用
修正后加法逻辑代码
import random def operateur(i): if i == "+": count = 0 total = 0 while count != 10: # 先生成数值类型的随机数,不要提前转字符串 numero = random.randint(1, 16) numero2 = random.randint(1, 16) # 先展示算式再接收用户输入 numUtilisateur = float(input(f"{numero} + {numero2} = ")) # 计算正确答案 correct_answer = numero + numero2 # 对比答案统计得分 if numUtilisateur == correct_answer: total += 1 print("回答正确") else: print(f"回答错误,正确答案为{correct_answer}") count += 1 print(f"10道题作答完成,你的得分是:{total}/10") return total
内容的提问来源于stack exchange,提问作者Babilwan
相关产品推荐
相关产品推荐

