Python не возвращает значение переменной в функции - PullRequest
0 голосов
/ 23 января 2020

У меня возникли трудности с этим фрагментом кода, который я пишу, который должен выводить как наклон, так и расстояние между двумя точками.

Глядя на это в визуализаторе python, кажется, что он способен вычислять значения, однако переменная расстояния не получает сохраненное значение. Он перезаписывается значением наклона.

У меня проблемы с пониманием того, как я должен использовать return в определении функции, так как это кажется проблемой.

def equation(x,y,x1,y1):
  distance=math.sqrt(((x-x1)**2)+((y-y1)**2))
  if x!=x1 and y1!=y:
    slope=(y1-y)/(x1-x)
    return slope
  else:
    slope='null'
    return slope
  return distance
slope=equation(1,3,2,1)
print(slope)
distance=equation(1,3,2,1)
print(distance)

Вывод кода здесь одинаков для обоих переменные.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Если вы хотите, чтобы оба были разными вызовами функций, например slope=equation(1,3,2,1) и distance=equation(1,3,2,1), попробуйте первый подход, а если вы хотите, чтобы оба вызова были в одной строке, например slope, distance=equation(1,3,2,1), попробуйте второй подход:

Первый подход

import math
def equation(x,y,x1,y1,var):
  if var == "slope":
    if x!=x1 and y1!=y:
      slope=(y1-y)/(x1-x)
      return slope
    else:
      slope='null'
      return slope
  elif var == "distance":
    distance=math.sqrt(((x-x1)**2)+((y-y1)**2))
    return distance
slope=equation(1,3,2,1,"slope")
print(slope)
distance=equation(1,3,2,1,"distance")
print(distance)

Второй подход

def equation(x,y,x1,y1):
  distance=math.sqrt(((x-x1)**2)+((y-y1)**2))
  if x!=x1 and y1!=y:
    slope=(y1-y)/(x1-x)
    return slope,distance
  else:
    slope='null'
    return slope,distance
slope, distance=equation(1,3,2,1)
print(distance)
print(slope)
0 голосов
/ 23 января 2020

Оператор возврата выходит из функции, когда сталкивается с ней. Вернуть кортеж из функции.

def equation(x,y,x1,y1):
    # calculate slope and distance
    return slope, distance

slope,distance = equation(1,3,2,1)
print(slope)
print(distance)
...