在 python 中将运算符分配给变量?

2025-03-12 08:55:00
admin
原创
22
摘要:问题描述:将数学应用于变量的常用方法是a * b 它能像这样计算并操作两个操作数吗?a = input('enter a value') b = input('enter a value') op = raw_input('enter a operand') 那么我该如何连接 op 和两个变量aand b?...

问题描述:

将数学应用于变量的常用方法是

a * b

它能像这样计算并操作两个操作数吗?

a = input('enter a value')
b = input('enter a value') 
op = raw_input('enter a operand')

那么我该如何连接 op 和两个变量aand b

我知道我可以将 op 与+-、进行比较%$然后分配和计算....

但是我可以做一些事情,例如a op b,如何告诉编译器 op 是一个运算符?


解决方案 1:

您可以使用操作符模块和字典:

import operator
ops = {
    "+": operator.add,
    "-": operator.sub,
    "*": operator.mul,
    "/": operator.div
}   
op_char = input('enter a operand')
op_func = ops[op_char]
result = op_func(a, b)

解决方案 2:

运算符模块http://docs.python.org/library/operator.html公开了与几乎所有 Python 运算符相对应的函数。您可以将运算符符号映射到这些函数以检索适当的函数,然后将其分配给您的 op 变量并计算 op(a, b)。

解决方案 3:

我知道这是一个非常古老的话题,但我相信当时人们并不知道这个eval函数(也许它是 Python 3 附带的)。所以这是对这个问题的更新答案

a = input('enter a value')
b = input('enter a value') 
op = input('enter an operand')
expression = a + op + b # simple string concatenation
result = eval(expression)

如果输入不期望始终有效,ast.literal_eval则可以改用。如果输入不是有效的 Python 数据类型,则会引发异常,因此如果不是,则不会执行代码。例如,如果abop分别为 5、10、+,
result则为 15

解决方案 4:

您可以使用 operator 模块来创建字典。从该模块的Python 3 文档中:

“operator 模块导出一组与 Python 固有运算符相对应的高效函数。例如,operator.add(x, y) 相当于表达式 x+y。”

import operator
ops = {
    "+": operator.add,
    "-": operator.sub,
    "*": operator.mul,
    "/": operator.truediv
}   
op_char = input('enter a operand')
a = 1
b = 2
result = ops[op_char](a,b)
print(result)

解决方案 5:

您需要手动将用户输入的字符串与您的操作数列表进行比较。这里没有 int() 的类似物,因为运算符是语言中的关键字而不是值。

将输入字符串与操作数列表进行比较并确定其对应的运算符后,可以使用 Python 标准库的运算符模块来计算将运算符应用于两个操作数的结果。

解决方案 6:

a = int(input("Give a number for an operation: "))
b = int(input("Give a number for the other operation: "))
operation = input("Choose a math operation (+, -, *, /): ")

if operation == "+":
           result = a + b
elif operation == "-":
            result = a - b
elif operation == "*":
           result = a * b
elif operation == "/":
           result = a / b
else:
           result = "Invalid operation"

print(f"The result is: {result}")
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1641  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1373  
  信创与云计算作为当今信息技术领域的两大关键力量,正深刻改变着各行业的发展格局。信创产业致力于实现信息技术的自主创新,保障国家信息安全;云计算则凭借其强大的计算能力、灵活的资源调配和低成本的优势,成为推动数字化转型的重要引擎。二者的融合发展,不仅能为企业提供更高效、安全、智能的信息技术解决方案,也将为国家的科技自立自强和...
国产化信创什么意思   0  
  信创产业作为国家战略新兴产业,承载着推动信息技术自主创新、保障国家信息安全的重要使命。在全球科技竞争日益激烈、数字化转型加速推进的大背景下,信创产业迎来了前所未有的发展机遇,同时也面临着诸多严峻的挑战。深入剖析这些挑战,并探寻切实可行的应对策略,对于信创产业的稳健发展至关重要。技术创新瓶颈信创产业的核心在于技术自主创新...
信创数据库   0  
  IPD(Integrated Product Development)流程与敏捷开发,看似两种不同的开发模式,实则可以相互融合,为企业带来更高效的产品开发体验。IPD流程强调的是从市场需求出发,进行端到端的产品开发管理,确保产品在市场上的成功。而敏捷开发则侧重于快速响应变化,以迭代的方式交付产品。将IPD流程应用于敏捷...
IPD流程全称   1  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用