输入正确答案11仍报错,这个短小Python程序的问题出在哪里?
错误原因
你代码的核心问题是混淆了字符串拼接和数值加法的运算逻辑,同时input()返回值的类型处理也不符合预期:
input()函数的返回值默认是字符串类型,你输入11时,num_in的实际值是字符串"11",不是整数11- 你将
set_num转为了字符串"33",此时代码中的num_in + set_num执行的是字符串拼接操作,得到的结果是"1133",和字符串"44"永远不相等,所以判断分支永远走else - 另外你的业务逻辑本身也写反了:你预期是「输入值 + 33 = 44」,但代码写的判断逻辑是「输入值拼接33的字符串等于44的字符串」,和预期逻辑完全不匹配
修正后的代码
# 先把输入值转为整数,再做数值加法判断 num_in = int(input("what + 33 is 44?: ")) set_num = 33 if num_in + set_num == 44: print("Yes!") else: print(f"{num_in} + {set_num} is not 44.")
遗漏的知识点
- Python中
+运算符的行为会随操作数类型变化:操作数为字符串时执行拼接,为数值类型(int/float)时才执行算术加法 input()函数无论输入什么内容,返回值永远是字符串类型,做数值计算前必须显式用int()或float()做类型转换- 不同类型的变量做运算或相等判断前,需要先统一类型,否则会得到不符合预期的结果
内容的提问来源于stack exchange,提问作者SWLer
相关产品推荐
相关产品推荐

