У меня есть функция f(x,y)
, и я хочу повторить ее несколько раз и построить результирующие точки. То, что я сделал это:Функция не возвращает список, и Sage не заносит в нее
def orbita(p,n):
a = [p]
for i in range(n-1):
p = f(p[0],p[1])
a.append(p)
print a
Применительно к точке p = (1,2)
и попросил n = 5
итераций, эта функция возвращает следующее:
[(1, 2), (2, 5/2), (5/2, 29/20), (29/20, 1241/1450), (1241/1450, 7285162/5218405)]
Который является правильным. Однако, когда я пытаюсь построить этот список точек на point(orbita((1,2),5))
, я просто получаю пустой сюжет.
Сначала я подумал, что это связано с тем, что point()
отображает «одну точку (как кортеж), список точек, одно комплексное число или список комплексных чисел», here, потому что я проверил type(orbita((1,2),5))
и получил NoneType
. Однако, когда я попытался присвоить список переменной L = orbit((1,2),5)
, моя переменная пуста, так как ввод L
ничего не возвращает, поэтому я больше не уверен, если это проблема. Если я скопировать список и написать:
point([(1, 2), (2, 5/2), (5/2, 29/20), (29/20, 1241/1450), (1241/1450, 7285162/5218405)])
Участок отлично работает, но я хотел бы использовать эту функцию для построения по крайней мере несколько сотен пунктов, так что я не хотел бы, чтобы скопировать их каждый раз. Я новичок в Sage и Python, поэтому я действительно не знаю, что я делаю неправильно на любом уровне.
Как распечатать результат функции orbita(p,n)
или как его изменить, чтобы набрав point(orbita(p,n))
Я получу участок?
(Кстати, на этом сайте типично иметь «минимальный рабочий пример», хотя в этом случае не имело значения, что такое 'f'.) – kcrisman
Теперь работайте, спасибо! Давным-давно я использовал C, и я вспомнил, что 'print' был более полезным, чем' return', я думаю, это не всегда так на других языках. –
Он часто * * полезен! Просто не то же самое. Действительно, в Python возвращаемый объект выглядит совсем не так, как печатное представление этого объекта - попробуйте сделать очень большую матрицу в Sage, например. – kcrisman