Python 使用给定元组中的算术运算

Python 使用给定元组中的算术运算,python,Python,我想在python中使用给定元组的算术运算。问题是,我知道我可以使用if语句,根据用户的输入,它会给出正确的答案。我不知道,但是有没有一种方法可以不用“如果”来做呢。正如您在下面看到的,我已经尝试了for,但是我在获取作为算术运算符的字符串时遇到了问题 代码: 您可以使用它,但要小心,因为如果处理不正确,它允许执行任意代码 if operator in __operators: rezultat = eval("x" + operator + "y") 您可以使用它,但要小心,因为如果

我想在python中使用给定元组的算术运算。问题是,我知道我可以使用if语句,根据用户的输入,它会给出正确的答案。我不知道,但是有没有一种方法可以不用“如果”来做呢。正如您在下面看到的,我已经尝试了for,但是我在获取作为算术运算符的字符串时遇到了问题

代码:

您可以使用它,但要小心,因为如果处理不正确,它允许执行任意代码

if operator in __operators:
    rezultat = eval("x" + operator + "y")
您可以使用它,但要小心,因为如果处理不正确,它允许执行任意代码

if operator in __operators:
    rezultat = eval("x" + operator + "y")

您可以使用
操作员
模块和
指令

import operator

op = {
    "+": operator.add
    "-": operator.sub
    "/": operator.truediv
    "//": operator.floordiv
    "*": operator.mul
    "**": operator.pow
    "%": operator.mod
}

print(op["+"](2, 3))
五,


您可以使用
操作员
模块和
指令

import operator

op = {
    "+": operator.add
    "-": operator.sub
    "/": operator.truediv
    "//": operator.floordiv
    "*": operator.mul
    "**": operator.pow
    "%": operator.mod
}

print(op["+"](2, 3))
五,


它与@Fukiyel的答案基本相同,但没有使用
操作符
模块。您可以实现希望计算器支持的所有操作,然后创建一个dict,输入运算符字符并为函数赋值:

def add(n1,n2):
    return n1 + n2

def subtract(n1,n2):
    return n1 - n2

def division(n1,n2):
    if n2 != 0:
        return n1 / n2

def integerDivision(n1,n2):
    if n2 != 0:
        return n1 // n2

def multiply(n1,n2):
    return n1 * n2

def power(n1,n2):
    return n1 ** n2

def modulo(n1,n2):
    return n1 % n2

__operators = {'+' : add, '-' : subtract, '/' : division, '//' : integerDivision, '*' : multiply, '**' : power, '%' : modulo}

def calculator():
    x = int(input())
    operator = input()
    y = int(input())

    for op in __operators:
        if operator == op:
            result = __operators[operator](x,y)
            print(result)
            return result 

calculator()

它与@Fukiyel的答案基本相同,但没有使用
操作符
模块。您可以实现希望计算器支持的所有操作,然后创建一个dict,输入运算符字符并为函数赋值:

def add(n1,n2):
    return n1 + n2

def subtract(n1,n2):
    return n1 - n2

def division(n1,n2):
    if n2 != 0:
        return n1 / n2

def integerDivision(n1,n2):
    if n2 != 0:
        return n1 // n2

def multiply(n1,n2):
    return n1 * n2

def power(n1,n2):
    return n1 ** n2

def modulo(n1,n2):
    return n1 % n2

__operators = {'+' : add, '-' : subtract, '/' : division, '//' : integerDivision, '*' : multiply, '**' : power, '%' : modulo}

def calculator():
    x = int(input())
    operator = input()
    y = int(input())

    for op in __operators:
        if operator == op:
            result = __operators[operator](x,y)
            print(result)
            return result 

calculator()

您遇到了问题,因为它不是运算符,只是字符串。另外,
if operator in u operators:
似乎完全没有意义,因为您在一个循环中
for operator in u operators:
@jornsharpe感谢您的更正。有没有一种方法可以将其转换为python将其作为运算符来读取?您可能需要使用一个字典,将运算符字符串映射到
运算符模块中的运算符函数。有两个选项。我建议进行研究,关于如何从字符串转换为运算符,存在一些问题。您遇到了问题,因为它不是运算符,只是字符串。另外,
if operator in u operators:
似乎完全没有意义,因为您在一个循环中
for operator in u operators:
@jornsharpe感谢您的更正。有没有一种方法可以将其转换为python将其作为运算符来读取?您可能需要使用一个字典,将运算符字符串映射到
运算符模块中的运算符函数。有两个选项。我建议进行研究,关于如何从字符串转换为运算符,存在一些问题。