Найти - Пользователи
Полная версия: Не работает функция.
Начало » Python для новичков » Не работает функция.
1
dimka82777
Добрый день.

Имеется такой код:
 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 ?
Striver
Когда я убрал символы форматирования из кода (b и u в квадратных скобках), у меня заработало, какие-то “missile” летают.
dimka82777
Спасибо, значит это с моим Pythone что-то не так.
А эти символы это я уже здесь вставил, думал подчеркнуть строку.
AD0DE412
а че выводит dir(), globals() и еще как на счет global calc_heading
а так да … странно все это
dimka82777
Не видит функция ни чего за её пределами, даже BASE_X, BASE_Y пришлось заносить в функцию.
Я грешу всё таки, на Portable версию python.
Striver
Не видит функция ни чего за её пределами, даже BASE_X, BASE_Y пришлось заносить в функцию.
Я грешу всё таки, на Portable версию python.
Это вряд-ли.
Попробуй у себя запустить этот файл (в нём все внутренние импорты и константы убраны). У меня он работает.
dimka82777
Теперь ошибка
missile = turtle.Turtle()
NameError: name ‘turtle’ is not defined

Так как закоментировали импорт turtle.
До calc_headin даже не доходит.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB