Найти - Пользователи
Полная версия: Как сделать цикл грамотно?
Начало » Центр помощи » Как сделать цикл грамотно?
1
Tenebras
Собственно вот скрипт. Не знаю - что и как там с ошибками… я питоном всего 4 дня общаюсь. Если укажите на косяки - буду рад и совсем не обижусь)))
А по скрипту вопрос будет ниже…

#-------------------
# Главная программа
#-------------------
# Указываем географические координаты пункта в градусах
lon  = 24.295833
lat  = 61.845833
# Создаем списки
name = []
time = []
T006 = []
T008 = []
T016 = []
T039 = []
T067 = []
# Меняем в цикле время от 0 до N минут с шагом 15 минут, начиная с 2014-05-01 11:00 UTC
for minute in range(0,15,15):
    # Записываем в список рассчитанное время
    time.append( datetime.datetime(2014, 05, 01, 15, 30) + datetime.timedelta(minutes=minute) )
    print time[-1]
    # Загружаем данные N каналов прибора SEVIRI для всего видимого диска планеты
    seviri = GeostationaryFactory.create_scene("meteosat", "10", "seviri", time[-1])
    globe = get_area_def("met09globeFull")
    seviri.load([0.6, 0.8, 1.6, 3.9, 6.7], area_extent=globe.area_extent)
    # Определяем координаты пикселя
    lons, lats = seviri[0.6].area.get_lonlats()
    x, y = getXY(lon, lat, lons, lats)
    # Добавляем данные в списки
    T006.append( seviri[0.6].data[x,y] )
    T008.append( seviri[0.8].data[x,y] )
    T016.append( seviri[1.6].data[x,y] )
    T039.append( seviri[3.9].data[x,y] )
    T067.append( seviri[6.7].data[x,y] )
names = [T006, T008, T016, T039, T067]
nums = [0.6, 0.8, 1.6, 3.9, 6.7] 
# Вывод данных на терминал
for num, nam in zip(nums, names):
     print(num, nam) 

Вопрос номер один.
Так вот суть: в начале программы у меня заданы географические координаты lon и lat и мне необходимо, в конечном итоге, обработать 10 различных координат.
То есть сейчас только одни координаты…. и создавать 10 файлов, что бы каждый обработал лишь одну точку - глупо.
Как реализовать?

Вопрос номер два.
В самом конце я делал вывод в терминал. Результаты получаются следующие:
timofei@pacman:~/pytroll/data$ python myscr.py
2014-05-01 15:30:00
(0.6, [30.749451692045909])
(0.8, [38.061068649794812])
(1.6, [24.852427315860883])
(3.9, [267.44210597612334])
(6.7, [217.05953064088922])
Вопрос: как мне вывести это не только в терминал, но и ещё в текстовый файл?
py.user.next
Tenebras
Так вот суть: в начале программы у меня заданы географические координаты lon и lat и мне необходимо, в конечном итоге, обработать 10 различных координат.
Нужно сделать функцию, которая принимает одни координаты, а потом запустить её несколько раз для разных координат.

Tenebras
как мне вывести это не только в терминал, но и ещё в текстовый файл?
Нужно открыть файл, получив файловый объект. А потом писать туда через print. Можешь потренироваться на файловом объекте sys.stdout.
>>> import sys
>>> 
>>> print >>sys.stdout, [1, 2, 3] * 2
[1, 2, 3, 1, 2, 3]
>>>
Tenebras
Если б я ещё знал - как эту функцию сделать.
Поставлю это в список первоочередных задач.
А пока, видимо, придётся 10 файлов делать)))

Но всё равно - несомненное Спасибо за ответ!!!
py.user.next
Tenebras
Если б я ещё знал - как эту функцию сделать.
>>> def f(lon, lat):
...     with open('file.txt', 'a') as fout:
...         s = 'longitude: {}, latitude: {}'.format(lon, lat)
...         print >>fout, s
... 
>>> f(1, 2)
>>> f(3, 4)
>>>

[guest@localhost py]$ cat file.txt 
longitude: 1, latitude: 2
longitude: 3, latitude: 4
[guest@localhost py]$
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