1. Python / Говнокод #7545

    −89

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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, 15 Августа 2011

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

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

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

        да и работа с листами (эти [0] на концах строк) только в Перле и имеет какой либо эквивалент. хотя и там тоже являются говном, бо програмер наверное не знает как ( регулярками пользоватся и) лист/скаляр контексты указывать.
        Ответить
        • И что юзают питонщики для создания GUI?
          Ответить
          • pyqt, wxWidgets, pygtk+
            Ответить
          • Есть нативная библиотека wx. Можно PyQt или PyGtk заюзать. Еще много других вариантов.
            Ответить
            • Посмотрел, на мой взгляд у PyQt интерфейс на порядок лучше чем у wxPython.
              Ответить
      • Да, перловая каша.
        Ответить
    • 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].
          Ответить
    • c бейсика :D
      Ответить
    • Пока никто не угадал, но было близко.
      Ответить
    • >> Угадайте, с какого языка пересел автор. (не пэхапэ)...

      да с героина он пересел... что тут гадать то...
      Ответить
    • С Черепашки или с Чертежника?
      Ответить
    • Неужели java?
      Ответить
    • моя ставка на C#.
      Ответить
    • буду оригинален - javascript
      Ответить
    • Визуальный бесик же!
      Ответить
    • HTML!!!
      А вообще показательна судьба этих всех "угадайте, найдите говно" и пр.
      Оп ушел так и не раскрыв правильного ответа.
      Ответить
    • показать все, что скрытоvanished
      Ответить

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