Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 14, 2011 19:14:20

ramainen
От:
Зарегистрирован: 2011-04-14
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на функцию

Помогите пожалуйста, в чём моя ошибка?
Условие задачи: Напишите функцию, рассчитывающую расстояние между двумя точками
на плоскости (координаты (x1, y1) и (x2, y2) даны). Вывести результат в терминал

код:
import math
def coordinate():
x2 = 1; x1 = 2; y2 = 5; y1 = 3;

def distance(coordinate):

k = ((x2-x1)**2 + (y2-y1)**2); #Формула расстояния между двумя точками
math.sqrt(k)

print distance(coordinate);

Терминал пишет ошибку:
ramainen@ramainen:~/проекты$ python prog1.py
Traceback (most recent call last):
File “prog1.py”, line 14, in <module>
print distance(coordinate)
File “prog1.py”, line 11, in distance
k = ((x2-x1)**2 + (y2-y1)**2)
NameError: global name ‘x2’ is not defined <—- Не понимаю, у меня же есть x2


Изменил код проги на:

import math

x1 = 1.0; x2 = 3.0; y1 = 3.0; y2 = 5.0

def distance(x1, x2, y1, y2):

math.sqrt((x2-x1)**2 + (y2-y1)**2)

print distance(x1, x2, y1, y2)

теперь терминал пишет:

ramainen@ramainen:~/проекты$ python prog1.py
None



Офлайн

#2 Апрель 14, 2011 19:37:00

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Задачка на функцию

return — есть такое ключевое слово



Офлайн

#3 Апрель 14, 2011 19:43:35

ramainen
От:
Зарегистрирован: 2011-04-14
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на функцию

Андрей Светлов
return — есть такое ключевое слово
Спасибо!
Теперь работает
код:
import math

def function():
x1 = 1; x2 = 3; y1 = 4; y2 = 6;
distance = math.sqrt((x2-x1)**2 + (y2-y1)**2);
return distance;

print function();



Офлайн

#4 Апрель 19, 2011 12:23:44

ramses
От:
Зарегистрирован: 2011-04-19
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на функцию

К чему лишние переменные? Ведь
distance = math.sqrt((x2-x1)**2 + (y2-y1)**2);
return distance;
и
return math.sqrt((x2-x1)**2 + (y2-y1)**2)
одно и тоже..



Офлайн

#5 Апрель 19, 2011 23:25:55

kyzic
От:
Зарегистрирован: 2010-10-23
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на функцию

непонятно зачем вообще здесь функция. ладно бы если ей координаты передавались в качестве аргументов. например
def distance(x1, x2, y1, y2):
return ((x2-x1)**2 + (y2-y1)**2)**0.5
print distance(1, 2, 3, 4)
math.sqrt имхо не оправдан. ну зачем? лишний импорт только.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version