Змея / Говнокод #7545 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 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 Fai, (Updated )

Комментарии (33) RSS

  • Кстати, мало того что это говнокод, так ещё и память утекает.
    Ответить
    • Костыль под win, чтобы консоль не показывать
      py->python.exe (с консолью),
      pyw -> pythonw.exe (то же самое, но без)
      Ответить
    • да вариантов то не много: либо Перл либо Tcl. Tk только с этими языками популярен.

      так как то что написано свыше на Tcl не похоже - значит перл.

      да и работа с листами (эти [0] на концах строк) только в Перле и имеет какой либо эквивалент. хотя и там тоже являются говном, бо програмер наверное не знает как ( регулярками пользоватся и) лист/скаляр контексты указывать.
      Ответить
  • for c in dest:
    if c is dest[-1]:
    destination += {'N':'Север','S':'Юг','W':'Запад','E':'В осток'}[c]
    else:
    destination += {'N':'Северо-','S':'Юго-','W':'Западо-','E':'Востоко-'}[c]

    Ндаааа... Иногда универсальное решение хуже иного грязного хака.
    Ответить
    • А я с этим решением согласен. Именно этот момент уже не улучшишь.
      Ответить
      • Можно безопасно предположить, что более трёх символов указания направления не будет, это была бы уже избыточная точность.
        Так что просто
        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].
        Ответить
  • Пока никто не угадал, но было близко.
    Ответить
  • >> Угадайте, с какого языка пересел автор. (не пэхапэ)...

    да с героина он пересел... что тут гадать то...
    Ответить
  • HTML!!!
    А вообще показательна судьба этих всех "угадайте, найдите говно" и пр.
    Оп ушел так и не раскрыв правильного ответа.
    Ответить
  • с.Q(B?R"K,S:G"K)C!IE:C$C J.L,T.Y?D!X!J)AY:U(QMP?O$T,FB:M.F,N$GH:Q!J V$T S.G Z!P)E(IY!PZH(B?L,X!E C NV$Y!Y$O$FE.Q!X,X:M)C.YT)X.D.U$N,I.EU E?I,G.I$Y)O)I(VT.I!Q$M:F$S$P B!J:DC:G.NW"O S:P$G(J,IC"M"O"V:R"J U)O)J"Y P)Z:V)V N?W?F(F,O.Y,R.Y)JM:H OA.C(T.H.Z.T Q:M,C O?JQ?C$S(N)W X$D"M O,Q)N(V$H.G,J(G W!W Z"N"K.K$A.K,C E$W$D)H?HW$R"J)W:O,I$I?T!Z?D"J(C:U!WN)K:YN)C$KH?G,C(S?K?L$O?Z"B M Z,B$E)G(Y!Q"A N!Y)SX:X?J,P A!C A?U,Z.V)B:E,N"Q"D!MIV:D(X)S!G.D.K!G Q"L,F(A(HI LW.D$Y"QH!Y.F!S,E RM$JM,T,D(G$Q"Z,ZM:P!V"X)H!M,U(P.I.XP:G)V)A)G"O:O!B!P?N.M$T.C?T$F(P?C,M)A,U?Y$Y Q)S,N)T!W"D:H.C A?K.D(NE(A S"X?C)Z"F"M?G"A$L!I:X)S"U!C$D(C,NFU)VY?W R,A!O(K"J:F?P$U(P"N(W(X)I$Q(W,F?C:B?S(T,M K)S?M I)P"D!O N)C!EA N!X O"O,B.U"Q,E.F(V(M(QL(X(N:U.M?B.A.F$M B!Q(Q Y)K?W)S?E(N)J:U?R H.U!R"L!C?I YR)G R(Z?X"J.Y?I.W$X)K(Z!L"V Y"V!T?M,P$H,Y$A"CH:Z?I.F$O!O!A,M!Q.V"O$I"F,K U?Y"O)B:B)O"L,H!N B?U$U"M)RY?S)H"BC)A(I)N!S"Z!M(K(N,C$M:Z K,I?L X.Q"T$M!K,P"R?A)G"U.L T!N(D,Q.E(N,T,O CJU.D.T?F$W(H$YN!J$C(E$L)K:H$J)D?Y!T,R H"Z N.T:L.Q?O)G.P(K Y.E"I"S$E!M(N(G D.S$K L?F)HL,Q?Z:C!S.X!Z,G?U(A:S,S$C N.OG(B$C,L(M,E,Y S?W$G:U S.Z:W L!X:JF(H)L F!B)Q$M,W,I(G"E.T)J$H?X W(C:W!P,T(Z?FПLJEQMKWETQFCKOPWOIXRCISPMGBPQOKMLCJBZKCNGHEXJCYTO
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8