Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 5, 2019 09:03:16

dimka82777
Зарегистрирован: 2019-09-05
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает функция.

Добрый день.

Имеется такой код:

 import turtle
import math
window = turtle.Screen()
window.setup(1200 + 3, 800 + 3)
window.bgpic('images/cosmos.png')
window.screensize(1200, 800)
BASE_X, BASE_Y = 0,-300
def calc_heading(x1, y1, x2, y2):
	import math
	dx = x2-x1	
	length = (dx ** 2 +(y2-y1) ** 2) ** 0.5
	cos_alpha = dx / length
	alpha = math.acos(cos_alpha)
	alpha = math.degrees(alpha)
	return alpha
def fire_missile(x, y):
	print(x,y)
	import turtle
	import math
	BASE_X, BASE_Y = 0,-300
	missile = turtle.Turtle()
	missile.color('red')
	missile.penup()
	missile.setpos(x=BASE_X, y=BASE_Y)
	missile.pendown()
	[b][u]heading = calc_heading(x1 = BASE_X, y1 = BASE_Y, x2 = x, y2 = y)[/u][/b]
	missile.setheading(heading)
	missile.forward(500)
	missile.shape('circle')
	missile.shapesize(2)
	missile.shapesize(3)
	missile.clear()
	missile.hideturtle()
window.onclick(fire_missile)
window.mainloop()
Ошибка возникает в heading = calc_heading(x1 = BASE_X, y1 = BASE_Y, x2 = x, y2 = y) “calc_heading” is not defined.
Обратите внимание, импортирую библиотеки в самой функции, т.к. функции “слепые” какие-то, не видят ни чего за их пределами.
Сама функция calc_heading работает, но вторая функция не может ею воспользоваться, т.к. не видит её.
Если я fire_missile вкладываю в calc_heading, ошибка не возникает, но и результата ни какого нет.

Вообщем подскажите, пожалуйста где копать?
Может эта проблема из-за того что у меня Python Portable 3.7.4.0 ?

Отредактировано dimka82777 (Сен. 5, 2019 09:04:53)

Офлайн

#2 Сен. 5, 2019 13:14:26

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

Не работает функция.

Когда я убрал символы форматирования из кода (b и u в квадратных скобках), у меня заработало, какие-то “missile” летают.



Прикреплённый файлы:
attachment my_turtle.py (851 байт)

Офлайн

#3 Сен. 5, 2019 15:01:39

dimka82777
Зарегистрирован: 2019-09-05
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает функция.

Спасибо, значит это с моим Pythone что-то не так.
А эти символы это я уже здесь вставил, думал подчеркнуть строку.

Офлайн

#4 Сен. 5, 2019 15:13:36

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Не работает функция.

а че выводит dir(), globals() и еще как на счет global calc_heading
а так да … странно все это



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#5 Сен. 5, 2019 15:46:45

dimka82777
Зарегистрирован: 2019-09-05
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает функция.

Не видит функция ни чего за её пределами, даже BASE_X, BASE_Y пришлось заносить в функцию.
Я грешу всё таки, на Portable версию python.

Отредактировано dimka82777 (Сен. 5, 2019 15:47:54)

Офлайн

#6 Сен. 6, 2019 10:23:21

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

Не работает функция.

Не видит функция ни чего за её пределами, даже BASE_X, BASE_Y пришлось заносить в функцию.
Я грешу всё таки, на Portable версию python.
Это вряд-ли.
Попробуй у себя запустить этот файл (в нём все внутренние импорты и константы убраны). У меня он работает.



Прикреплённый файлы:
attachment my_turtle.py (855 байт)

Офлайн

#7 Сен. 6, 2019 11:55:01

dimka82777
Зарегистрирован: 2019-09-05
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает функция.

Теперь ошибка
missile = turtle.Turtle()
NameError: name ‘turtle’ is not defined

Так как закоментировали импорт turtle.
До calc_headin даже не доходит.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version