Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Ошибка в Python'овской программе - что не так?  (Прочитано 1450 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Phlya

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Учусь программировать на питоне. В порядке тренировке решил написать программку для простейшего расчета задачи трех тел (см. http://ru.wikipedia.org/wiki/Задача_трёх_тел).
И, вроде, я уже приближаюсь к концу в этом, но возникает непонятная мне ошибка (то есть я, вроде, понимаю, что ему не нравится, но не понимаю, почему ошибка возникает в этом месте...).
Поскольку программировать я только учусь, код, наверное, не очень "красивый", но пока что я за этим не гонюсь, хотя буду рад, если кто-то укажет на такие места и опишет, как можно сделать лучше.

Вот сама программа:
(Нажмите, чтобы показать/скрыть)

А вот результат запуска (строчка, в которой возникает ошибка, выделена лишними отступами в коде программы для удобства - цвет в коде не показывает):
(Нажмите, чтобы показать/скрыть)

Буду очень благодарен, если кто-то найдет время, жаление и силу, чтобы разобраться с программкой и помочь!
Спасибо заранее!
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн cav

  • Любитель
  • *
  • Сообщений: 57
    • Просмотр профиля
    • Истории одного программера
Re: Ошибка в Python'овской программе - что не так?
« Ответ #1 : 25 Апреля 2012, 05:39:20 »
вот здесь
Цитировать
coordi.append(tuple(sum(pair) for pair in zip(coord[i-1][v], (j*dt for j in allVs))))
у тебя результат работы zip получается ни целым и не итератором
погоняй то что ты там написал отдельно и погляди какой у тебя там тип выходит
(Ubuntu 12.04, Ubuntu 10.04)
http://cavinc.blogspot.com/

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Ошибка в Python'овской программе - что не так?
« Ответ #2 : 25 Апреля 2012, 06:58:41 »
Вот она цена отсутствия строгой типизации. За типами приходится следить, но самому.
Мыши плакали колось но продолжали жрать кактус =)

Оффлайн Phlya

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Ошибка в Python'овской программе - что не так?
« Ответ #3 : 25 Апреля 2012, 09:51:48 »
вот здесь
Цитировать
coordi.append(tuple(sum(pair) for pair in zip(coord[i-1][v], (j*dt for j in allVs))))
у тебя результат работы zip получается ни целым и не итератором
погоняй то что ты там написал отдельно и погляди какой у тебя там тип выходит
Спасибо! Да, я понял, какая там заморочка возникает, буду разбираться вечером...

Вот она цена отсутствия строгой типизации. За типами приходится следить, но самому.
Мыши плакали колось но продолжали жрать кактус =)
А это что означает?)
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Phlya

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Ошибка в Python'овской программе - что не так?
« Ответ #4 : 28 Апреля 2012, 12:08:07 »
Если что, я разобрался, программу доделал)
Хотя иногда там странные вещи в результате получаются, какие-то прыжки тел в пространстве) Если кому-то интересно, могу выложить доделанный код.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн SSS!!!

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Если что, я разобрался, программу доделал)
Хотя иногда там странные вещи в результате получаются, какие-то прыжки тел в пространстве) Если кому-то интересно, могу выложить доделанный код.
Если не трудно то выложи,я тоже посмотрю

Оффлайн Phlya

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
http://ubuntuone.com/2PvszfnYJcc9jwcqZB6c9O Вариант с использованием NumPy, там возникает ошибка, я не понимаю, почему. Но разобраться с ним будет значительно проще, потому что многие вещи с помощью NumPy оказалось написать гораздо короче, хотя, видимо, работает программа заметно дольше. Но там эта дурацкая ошибка... Посмотрите на нее, пожалуйста...

http://ubuntuone.com/4egTr6V159WyTdr8fsiU8r Вариант на "чистом" питоне, работает, но с вышеописанной проблемой - одно или два тела в какой-то момент перепрыгивают куда-то...
(картинку я рисовал с помощью R, могу рассказать как, если будет интересно)

Комментариев там не очень много в коде, если потребуются пояснения, буду рад помочь.

Если будут идеи, как можно что-то реализовать лучше (короче, аккуратнее, более по-питоновски, быстрее и т. д.), буду им рад!
« Последнее редактирование: 16 Мая 2012, 12:20:30 от Phlya »
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн SSS!!!

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
http://ubuntuone.com/2PvszfnYJcc9jwcqZB6c9O Вариант с использованием NumPy, там возникает ошибка, я не понимаю, почему.

http://ubuntuone.com/4egTr6V159WyTdr8fsiU8r Вариант на "чистом" питоне, работает, но с вышеописанной проблемой - одно или два тела в какой-то момент перепрыгивают куда-то...
(картинку я рисовал с помощью R, могу рассказать как, если будет интересно)

Комментариев там не очень много в коде, если потребуются пояснения, буду рад помочь.

Если будут идеи, как можно что-то реализовать лучше (короче, аккуратнее, более по-питоновски, быстрее и т. д.), буду им рад!
спасибо, расскажи как ты рисова

Оффлайн Phlya

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Я не большой специалист по R, поэтому использовал R commander, где очевидно, как это сделать. Но можно и без него с помощью вот такого скрипта:
Данные <- read.table("/home/ilya/python scripts/table.csv", header=FALSE,
  sep="\t", na.strings="NA", dec=".", strip.white=TRUE)
library(rgl, pos=4)
library(mgcv, pos=4)
scatter3d(Данные$V1, Данные$V3, Данные$V2, surface=FALSE, residuals=TRUE,
  groups=Данные$V4, parallel=FALSE, bg="white", axis.scales=TRUE, grid=TRUE,
  ellipsoid=FALSE, xlab="V1", ylab="V3", zlab="V2")

Соответственно, /home/ilya/python scripts/table.csv - сюда я скопировал результат работы программы.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Phlya

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Ну как, Вы посмотрели программку? Скажете что-нибудь? =)
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн SSS!!!

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
я всего лишь новичок в программировании

Оффлайн Phlya

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
я всего лишь новичок в программировании
А, ясно =) Я тоже)
Ubuntu 14.04 (Unity), MSI GE40

 

Страница сгенерирована за 0.035 секунд. Запросов: 21.