Python字典如何关联运算符与输入字符串 实现兼容整数浮点数的计算器
简易Python计算器问题修正方案
原代码存在的具体问题
- 语法硬错误:定义运算符字典时,
'-':-字段值缺失,运行时会直接触发语法报错,程序无法启动 - 核心逻辑偏差:字典内存储的是和键完全相同的运算符字符串,没有绑定实际计算逻辑,最终输出只是把输入的数字字符串、运算符、第二个数字做拼接打印,完全不会得到真实运算结果
- 数值类型兼容缺陷:仅对第二个输入做
int强转,既没有处理第一个输入的原生字符串类型,也无法兼容浮点数的运算需求 - 缺乏边界校验:用户输入非数字、不存在的运算符时,程序会直接崩溃抛出栈追踪信息
落地修正步骤
- 统一用
float()处理所有数值输入:无论用户输入整数还是带小数点的浮点数,都可以被正确解析为可运算的数值类型,从根源上兼容两类运算需求 - 重构运算符字典逻辑:字典的键保留用户输入的字符串形式(比如
+、//),值替换为对应的实际运算方法,避免重复定义字符串的无效逻辑 - 补充基础异常捕获,覆盖非数字输入、非法运算符输入的场景,提升程序健壮性
修正后的可运行代码
import operator # 运算符映射:键匹配用户输入的字符串,值绑定对应实际运算方法 op_map = { '+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.truediv, '//': operator.floordiv } try: # 浮点型转换兼容整数、浮点数输入 num1 = float(input('Bitte geben sie die erste Zahl an: ')) op = input(''' welcher Operator soll benutzt werden? Hier, einige Möglichkeiten: +, -, *(mal), /(geteilt), //(geteilt, ohne den Rest) ''').strip() num2 = float(input('Bitte geben sie die zweite Zahl an: ')) # 匹配运算逻辑并计算结果 calc_result = op_map[op](num1, num2) print(f'Das Ergebnis lautet: {calc_result}') except ValueError: print('Fehler: Bitte geben Sie eine gültige Zahl ein!') except KeyError: print('Fehler: Der eingegebene Operator wird nicht unterstützt!')
内容的提问来源于stack exchange,提问作者Faruk Nergiz
相关产品推荐
相关产品推荐

