2016-08-29 7 views
-1

수학 기호를 함수 매개 변수에 추가하는 방법이 있는지 알고 싶습니다.Python 함수 매개 변수의 수학 기호는 무엇입니까?

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 

입니다 때로는 때로는 첫 번째 심볼에 대한 +/- 및 두 번째 심볼에 대한 +/-와

ORIGINAL CODE :

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 
+1

죄송합니다, 당신은 정교한 수있는 좀 더 –

+0

하셨습니까'답 = X "기호"y' : 아래의 예 봐? –

답변

2

:하지만,

또한 해당 기능에 기호를 매핑하는 사전을 사용할 수 있습니다. math 기본 파이썬 라이브러리이며이 잘되지 않기 때문에 magic 대신 math 나는이 기능을 사용하고 있습니다 :

>>> 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 

따라서, 함수처럼 될 것입니다 미리 정의 된 키워드를 사용하도록 연습하십시오.

+0

이 답변을 많이 도와 주셔서 감사합니다! –

1

가에서 해당 기능을 사용하여모듈 : 당신이 함수에 수학 기호를 통과 할 수

from operator import add 
def math(x, y, add): 
     answer = add(x, y) 
     return answer 

유일한 방법은 통과 후, 당신은뿐만 아니라 부호와 방정식을 평가하는 두 가지 문제가있는 것, 문자열 모드에 있습니다. 따라서 숫자를 다룰 때 올바른 기능을 사용하여 직무를 직접 수행하는 것이 좋습니다. 당신이 operator 라이브러리에 정의 된 연산자의 기능을 통과 할 수 있지만 당신은 함수에 연산자를 전달할 수 없습니다

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 
+2

그리고'add (x, y) = answer'를 구문 오류로 처리하려면 어떻게해야합니까? –

+0

'대답 = add (x, y)' –

+0

@AnttiHaapala 그냥 과거의 실수를 복사하십시오! – Kasramvd

0

먼저 answer = x symbol y을 사용해야한다고 생각하고 반대가 아닙니다.

그런 다음 심볼 사용과 관련하여 함수를 매개 변수로 보낼 수 있습니다. 기본 연산자의 경우 operator 모듈을 사용할 수 있습니다. 예를 들어

:

import operator 

def math(x, y, function): 
     return function(x, y) 

math(4,5, operator.sub) 

당신은 문서에 필요한 모든 다른 작업을 찾을 수 있습니다.

0

나는 아무도 언급하지 않고있다. 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 
+0

'eval'은 프로그램에서 절대 사용하지 않는 것이 좋습니다. 작동하지만 권장하지는 않습니다. 실제로, 내게 따르면,'eval' 함수는 언제든지 바이러스로 변할 수 있으며, 무엇이 잘못되었는지조차 알 수 없을 것입니다. –

+0

@MoinuddinQuadri "위대한 힘이 큰 책임감을 가져다 준다"는 말은 내 의견이 될 것입니다. –