- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
#weather.pyw
from urllib import request
from tkinter import *
import tkinter
import threading
from threading import *
import time
i = 0
active = True
def timerTick( toSleep ):
global active
while active:
refreshCall(0)
time.sleep(toSleep)
def refreshCall(event):
t = Thread(target = refresh)
t.start()
def refresh(*event):
global i
ref['text'] = str(i)
i+=1
r = request
page = str(r.urlopen('http://realmeteo.ru/moscow/1/current/').read())
temperature = page.split('</tr><tr id="num_data"><td>')[1].split(' ')[0]
pressure = page.split(' </td><td>')[1].split(' ')[0]
wind = page.split('<tr id="num_data"><td></td><td>')[1].split(' ')[0]
dest = page.split('<param name="movie" value="/.swf/wind_dir/')[1].split('.swf')[0]
destination = ''
for c in dest:
if c is dest[-1]:
destination += {'N':'Север','S':'Юг','W':'Запад','E':'Восток'}[c]
else:
destination += {'N':'Северо-','S':'Юго-','W':'Западо-','E':'Востоко-'}[c]
#print( temperature, pressure, wind, destination )
l1['text'] = 'Температура: '+temperature
l2['text'] = 'Давление : '+pressure
l3['text'] = 'Сила ветра : '+wind
l4['text'] = 'Направление: '+destination
r = request
page = str(r.urlopen('http://realmeteo.ru/moscow/1/current/').read())
temperature = page.split('</tr><tr id="num_data"><td>')[1].split(' ')[0]
pressure = page.split(' </td><td>')[1].split(' ')[0]
wind = page.split('<tr id="num_data"><td></td><td>')[1].split(' ')[0]
dest = page.split('<param name="movie" value="/.swf/wind_dir/')[1].split('.swf')[0]
destination = ''
for c in dest:
if c is dest[-1]:
destination += {'N':'Север','S':'Юг','W':'Запад','E':'Восток'}[c]
else:
destination += {'N':'Северо-','S':'Юго-','W':'Западо-','E':'Востоко-'}[c]
form = tkinter.Tk()
l1 = Label(form,text='Температура: '+temperature,justify='left'); l1.pack()
l2 = Label(form,text='Давление : '+pressure,justify='left'); l2.pack()
l3 = Label(form,text='Сила ветра : '+wind,justify='left'); l3.pack()
l4 = Label(form,text='Направление: '+destination,justify='left'); l4.pack()
ref = Button(form, text = 'Обновить'); ref.pack()
ref.bind('<Button-1>',refreshCall)
timerThread = Thread(target = timerTick, args=(5,))
timerThread.start()
form.mainloop()
active = False
Угадайте, с какого языка пересел автор. (не пэхапэ)
Fai 15.08.2011 03:17 # 0
bugmenot 15.08.2011 04:55 # 0
turdman 15.08.2011 05:03 # +2
py->python.exe (с консолью),
pyw -> pythonw.exe (то же самое, но без)
Fai 15.08.2011 13:22 # 0
roman-kashitsyn 15.08.2011 09:06 # +3
Brainfuck?
TheHamstertamer 15.08.2011 10:52 # +1
Dummy00001 15.08.2011 13:38 # −1
так как то что написано свыше на Tcl не похоже - значит перл.
да и работа с листами (эти [0] на концах строк) только в Перле и имеет какой либо эквивалент. хотя и там тоже являются говном, бо програмер наверное не знает как ( регулярками пользоватся и) лист/скаляр контексты указывать.
Fai 15.08.2011 13:45 # 0
TheHamstertamer 15.08.2011 14:10 # 0
bazyaka 15.08.2011 14:12 # 0
Fai 15.08.2011 14:32 # 0
guest 29.01.2013 10:45 # 0
Vindicar 15.08.2011 12:04 # 0
if c is dest[-1]:
destination += {'N':'Север','S':'Юг','W':'Запад','E':'В осток'}[c]
else:
destination += {'N':'Северо-','S':'Юго-','W':'Западо-','E':'Востоко-'}[c]
Ндаааа... Иногда универсальное решение хуже иного грязного хака.
Fai 15.08.2011 13:13 # −1
Vindicar 15.08.2011 17:11 # 0
Так что просто
dirmap = {'N':'', 'NNW':'', 'NW':'' } #и так далее
destination = dirmap.get(dest, dest)
Да, больше захардкоженных строк. Да, бессмысленные вариации типа NSW не обработаются. Но читабельность куда выше.
Если очень хочется как в оригинале, то можно такой однострочник:
''.join( {'N':'Северо-','S':'Юго-','W':'Западо-','E':'Востоко-'}[c] for c in dest[:-1] )+{'N':'Север','S':'Юг','W':'Запад','E': 'В осток'}[dest[-1]]
Это, по-моему, не так сбивает с толку, как проверка c is dest[-1].
Lure Of Chaos 15.08.2011 12:50 # +3
Fai 15.08.2011 13:11 # −1
RaZeR 15.08.2011 14:25 # 0
JeremyW 15.08.2011 14:19 # +8
да с героина он пересел... что тут гадать то...
roman-kashitsyn 15.08.2011 15:06 # 0
JeremyW 15.08.2011 15:17 # 0
Fai 15.08.2011 15:20 # −1
7ion 15.08.2011 15:21 # +7
roman-kashitsyn 15.08.2011 15:49 # +2
Lure Of Chaos 15.08.2011 15:55 # 0
guest 16.08.2011 14:00 # 0
jQuery 28.08.2011 21:14 # 0
TheHamstertamer 12.01.2012 18:46 # +1
guest 27.03.2012 02:16 # 0
3.14159265 27.03.2012 17:00 # 0
А вообще показательна судьба этих всех "угадайте, найдите говно" и пр.
Оп ушел так и не раскрыв правильного ответа.
guest 27.03.2012 17:58 # +2
Fai 10.04.2012 20:25 # −1
guest8 09.04.2019 11:20 # −999