Python函数参数中的数学符号?
Python Mathematical signs in function parameter?
我想知道是否有办法将数学符号添加到函数参数中。
def math(x, y, symbol):
answer = x 'symbol' y
return answer
这是我的意思的一个小例子。
编辑:
这是整个问题
def code_message(str_val, str_val2, symbol1, symbol2):
for char in str_val:
while char.isalpha() == True:
code = int(ord(char))
if code < ord('Z'):
code symbol1= key
str_val2 += str(chr(code))
elif code > ord('z'):
code symbol1= key
str_val2 += str(chr(code))
elif code > ord('A'):
code symbol2= key
str_val2 += str(chr(code))
elif code < ord('a'):
code symbol2= key
str_val2 += str(chr(code))
break
if char.isalpha() == False:
str_val2 += char
return str_val2
我需要多次调用该函数,但有时第一个符号使用 +/-,第二个符号有时使用 +/-
原始代码:
def code_message(str_val, str_val2):
for char in str_val:
while char.isalpha() == True:
code = int(ord(char))
if code < ord('Z'):
code -= key
str_val2 += str(chr(code))
elif code > ord('z'):
code -= key
str_val2 += str(chr(code))
elif code > ord('A'):
code += key
str_val2 += str(chr(code))
elif code < ord('a'):
code += key
str_val2 += str(chr(code))
break
if char.isalpha() == False:
str_val2 += char
return str_val2
使用相应的功能,来自operator
模块:
from operator import add
def math(x, y, add):
answer = add(x, y)
return answer
您可以将数学符号传递给函数的唯一方法是在字符串模式下传递,然后您将遇到两个问题,同时计算符号和方程。所以当你处理数字时,你最好使用适当的函数来直接完成这项工作。
也可以使用字典将符号映射到对应的函数:
from operator import add, sub, mul
mapping = {"+": add, "-":sub, "*": mul}
def math(x, y, sym):
try:
f = mapping[sym]
except KeyError:
raise Exception("Enter a valid operator")
else:
answer = f(x, y)
return answer
您不能将运算符传递给函数,但是您可以传递 operator
库中定义的运算符函数。因此,您的功能将类似于:
>>> from operator import eq, add, sub
>>> def magic(left, op, right):
... return op(left, right)
...
例子:
# To Add
>>> magic(3, add, 5)
8
# To Subtract
>>> magic(3, sub, 5)
-2
# To check equality
>>> magic(3, eq, 3)
True
注意:我使用函数作为 magic
而不是 math
因为 math
是默认的 python 库并且它使用预定义关键字不是好的做法。
你应该首先考虑你必须使用answer = x symbol y
而不是相反
然后关于符号的使用,您可以将函数作为参数发送。
对于基本运算符,您可以使用 operator 模块。
例如:
import operator
def math(x, y, function):
return function(x, y)
math(4,5, operator.sub)
您将在文档中找到您需要的所有其他操作。
我很惊讶没有人提到 eval()
。看下面的例子:
def function(operator1, operator2, symbol):
return eval(str(operator1) + symbol + str(operator2))
print(function(2, 3, '+')) # prints: 5
print(function(2, 3, '-')) # prints: -1
# Of course you can also "chain" operations, e.g., for 4 + 5 - 6
result = function(function(4, 5, '+'), 6, '-')
print(result) # prints 3
# Finally, it also works with string input for the operands so you
# can read them directly from e.g., user input with `input()`
print(function('2', '3', '+')) # prints: 5
我想知道是否有办法将数学符号添加到函数参数中。
def math(x, y, symbol):
answer = x 'symbol' y
return answer
这是我的意思的一个小例子。
编辑: 这是整个问题
def code_message(str_val, str_val2, symbol1, symbol2):
for char in str_val:
while char.isalpha() == True:
code = int(ord(char))
if code < ord('Z'):
code symbol1= key
str_val2 += str(chr(code))
elif code > ord('z'):
code symbol1= key
str_val2 += str(chr(code))
elif code > ord('A'):
code symbol2= key
str_val2 += str(chr(code))
elif code < ord('a'):
code symbol2= key
str_val2 += str(chr(code))
break
if char.isalpha() == False:
str_val2 += char
return str_val2
我需要多次调用该函数,但有时第一个符号使用 +/-,第二个符号有时使用 +/-
原始代码:
def code_message(str_val, str_val2):
for char in str_val:
while char.isalpha() == True:
code = int(ord(char))
if code < ord('Z'):
code -= key
str_val2 += str(chr(code))
elif code > ord('z'):
code -= key
str_val2 += str(chr(code))
elif code > ord('A'):
code += key
str_val2 += str(chr(code))
elif code < ord('a'):
code += key
str_val2 += str(chr(code))
break
if char.isalpha() == False:
str_val2 += char
return str_val2
使用相应的功能,来自operator
模块:
from operator import add
def math(x, y, add):
answer = add(x, y)
return answer
您可以将数学符号传递给函数的唯一方法是在字符串模式下传递,然后您将遇到两个问题,同时计算符号和方程。所以当你处理数字时,你最好使用适当的函数来直接完成这项工作。
也可以使用字典将符号映射到对应的函数:
from operator import add, sub, mul
mapping = {"+": add, "-":sub, "*": mul}
def math(x, y, sym):
try:
f = mapping[sym]
except KeyError:
raise Exception("Enter a valid operator")
else:
answer = f(x, y)
return answer
您不能将运算符传递给函数,但是您可以传递 operator
库中定义的运算符函数。因此,您的功能将类似于:
>>> from operator import eq, add, sub
>>> def magic(left, op, right):
... return op(left, right)
...
例子:
# To Add
>>> magic(3, add, 5)
8
# To Subtract
>>> magic(3, sub, 5)
-2
# To check equality
>>> magic(3, eq, 3)
True
注意:我使用函数作为 magic
而不是 math
因为 math
是默认的 python 库并且它使用预定义关键字不是好的做法。
你应该首先考虑你必须使用answer = x symbol y
而不是相反
然后关于符号的使用,您可以将函数作为参数发送。 对于基本运算符,您可以使用 operator 模块。
例如:
import operator
def math(x, y, function):
return function(x, y)
math(4,5, operator.sub)
您将在文档中找到您需要的所有其他操作。
我很惊讶没有人提到 eval()
。看下面的例子:
def function(operator1, operator2, symbol):
return eval(str(operator1) + symbol + str(operator2))
print(function(2, 3, '+')) # prints: 5
print(function(2, 3, '-')) # prints: -1
# Of course you can also "chain" operations, e.g., for 4 + 5 - 6
result = function(function(4, 5, '+'), 6, '-')
print(result) # prints 3
# Finally, it also works with string input for the operands so you
# can read them directly from e.g., user input with `input()`
print(function('2', '3', '+')) # prints: 5