Python计算器开发遇无法向字典添加Test键值对问题求助
问题排查与修正
你的代码存在两处直接导致字典赋值失败的问题,另有一处逻辑隐患,具体如下:
- 语法错误:计算
awnser的行多写了一个左方括号[,会直接触发Python语法报错终止程序,无法执行到后续字典赋值的逻辑。正确写法为awnser = question[0] * question[2] - 逻辑判断写法错误:
if '*' or 'x' in question:的判断逻辑不符合预期,Python中该表达式会被解析为if ('*') or ('x' in question),非空字符串'*'的布尔值永远为True,无论输入运算符是什么都会进入该分支。如果要判断列表中是否存在*或x,正确写法为if '*' in question or 'x' in question: - 逻辑隐患:每次循环没有清空
question列表,旧的输入内容会一直残留,导致后续判断逻辑永远命中之前输入过的运算符,建议每次循环开始时执行question.clear()清空列表。
修正后完整代码
question = [] awnslog = { 'None': 0 } while True: # 每次循环清空列表,避免上次输入残留 question.clear() Inp = int(input('>> ')) Inp2 = str(input('>> ')) Inp3 = int(input('>> ')) question.insert(0, Inp3) question.insert(0, Inp2) question.insert(0, Inp) # 修正判断逻辑 if '*' in question or 'x' in question: print('*') print(question[0]*question[2]) # 修正语法错误,删除多余左方括号 awnser = question[0] * question[2] awnslog['Test'] = awnser print(awnslog)
内容的提问来源于stack exchange,提问作者user16985310
相关产品推荐
相关产品推荐

