2016-07-16 1 views
0

Я начал кодировать 2 дня назад и только для некоторой практики я решил сделать калькулятор. Он продолжает давать мне ошибки, говоря, что num1 не определен.Как работают аргументы функции в python?

#data collection 
def a1(num1, op, num2) : 
num1 = int[input("enter the first number: ")] 
op = input("enter the operation: ") 
num2 = int[input("enter the second number: ")] 


#running the operations 
def a2() : 
if (op == "+"): 
    num3 = num1 + num2 
    print (num3) 
elif (op == "-"): 
    num4 = num1 - num2 
    print (num4) 
elif (op == "*"): 
    num5 = num1 * num2 
    print (num5) 
elif (op == "/"): 
    num6 = num1/num2 
    print (num6) 
else: 
    a1(num1, op, num2) 
    a2() 
a1(num1, op, num2) 
a2() 

ответ

1

Аргументы функции - это позиционные переменные. Вам нужно вызвать функцию и передать ей переменные, чтобы она работала.

Переменные, переданные функции, являются локальными, используются только в функции. Вы хотите либо изменить глобальную переменную, либо вернуться из этой функции.

Что делает ваш код, это передача неназначенных имен переменных num1, op, num2 в функцию.

Подробнее здесь: http://www.tutorialspoint.com/python/python_functions.htm

0

Вот способ исправить существующий код:

#data collection 
def a1(): 
    num1 = int(input("enter the first number: ")) 
    op = input("enter the operation: ") 
    num2 = int(input("enter the second number: ")) 
    return num1, op, num2 

#running the operations 
def a2(num1, op, num2): 
    if (op == "+"): 
     num3 = num1 + num2 
     print(num3) 
    elif (op == "-"): 
     num4 = num1 - num2 
     print(num4) 
    elif (op == "*"): 
     num5 = num1 * num2 
     print (num5) 
    elif (op == "/"): 
     num6 = num1/num2 
     print(num6) 
    else: 
     num1, op, num2 = a1() 
     a2(num1, op, num2) 

num1, op, num2 = a1() 
a2(num1, op, num2) 

Изменения, которые я сделал:

  1. Сделать a1 не принимает никаких параметров, но вместо возвращения три значения.
  2. Сделайте вызывающих абонентов a1, чтобы вернуть возвращаемые значения в локальные переменные.
  3. a2 принять три параметра.
  4. Изменить int[...]int(...).
  5. Исправьте некоторые углубления и пробелы, чтобы они соответствовали типичному стилю Python.
0

Последние две строки:

a1(num1, op, num2) 
a2() 

являются "основным" телом вашей программы. До этого два определения функций. Когда вы вызываете a1, каково значение num1? Действительно, каков его тип? Ответ: это имя, не связанное с ним. Вот почему жалуется интерпретатор Python.