如何让Python中用户输入的operator作为运算符执行两数运算?
问题原因
- 现有代码的核心错误是
float(First) Operator float(Second)不符合Python语法规则:Python无法直接把字符串类型的运算符变量当做运算符号直接使用 - input函数默认返回字符串类型,就算你把两个操作数转成了float类型,也不能直接和字符串运算符拼接执行运算
解决方案1:条件分支判断(推荐,无安全风险)
逻辑清晰可控,支持自定义边界校验,不会产生恶意代码执行风险,适合所有场景使用:
# 提前把输入的数字转成float类型 first = float(input("First Number: ")) operator = input("Operator: ") second = float(input("Second Number: ")) if operator == '+': res = first + second elif operator == '-': res = first - second elif operator == '*': res = first * second elif operator == '/': # 额外增加除零判断避免报错 if second == 0: print("错误:除数不能为0") exit() res = first / second else: print("错误:不支持的运算符,请输入+、-、*、/中的一种") exit() print(res)
解决方案2:eval实现(简洁但有安全风险)
如果只有你个人使用,不存在外部用户输入的场景,可以用eval简化代码:
first = input("First Number: ") operator = input("Operator: ") second = input("Second Number: ") try: res = eval(f"{float(first)} {operator} {float(second)}") print(res) except ZeroDivisionError: print("错误:除数不能为0") except SyntaxError: print("错误:不支持的运算符")
注意:eval会执行传入的任意代码,如果是对外提供的功能不要使用该方案,避免恶意代码执行风险
内容的提问来源于stack exchange,提问作者Isakbanton
相关产品推荐
相关产品推荐

