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

    −112

    1. 1
    while h == h

    Делал так раньше, когда не знал про while True

    Запостил: lancerok, 16 Ноября 2012

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

    • как понять while True?
      типа
      while True :
      условие
      Ответить
    • Автор, Питон это первый язык, который ты изучил(чаешь)?
      Ответить
      • Да, первый язык.
        Ответить
        • Хорошо хоть не PHP.
          Ответить
          • Питон набирает популярность. Спасибо django. Теперь няшные хомпеги можно и на питоне.
            Ответить
            • Когда на нем появятся хоть парочку нормальных бесплатных движков, тогда поговорим.
              Ответить
    • Оба варианта плохи. Используй переменную для условия выхода из цикла. А то запутаешься потом в break-ах.
      Ответить
      • А если выход из цикла по исключению?
        Ответить
        • По OutOfMemory?
          Ответить
          • В Python например есть StopIteration (окончание итерации в for a in L), SystemExit и KeyboardInterrupt, все это - исключения
            Ответить
            • Видел, конечно, что это нормальная практика в питоне... Но всё равно мне кажется что такое должно использоваться только в редких крайних случаях, где через переменную получается слишком уж громоздко.
              Ответить
      • > Используй переменную для условия выхода из цикла
        А в этом вашем питоне есть NaN?
        С ним break не понадобится.
        Ответить
        • Кто минуснул гостя?
          Док-ва его слов ниже:
          http://govnokod.ru/12137#comment161157
          Ответить
    • Так 0==0 ведь короче.
      Или вот так 0^0==0
      Ответить
      • Лучше определить Э как 8, чтобы потом писать 8==Э
        http://govnokod.ru/9150
        Ответить
      • #!/usr/bin/python
        # -*- coding: utf-8 -*-
        from time import sleep;
        
        if __name__ == '__main__':
            while 0**0 == 1:
                print("Мир всё еще на месте")
                sleep(0xffffffff);
        Ответить
        • Поставил в автозапуск, слежу за состоянием мира.

          Пока всё ок.
          Ответить
          • Мир всё-ещё впорядке.
            Ответить
            • У меня эта прога похоже повисла. Не рапортует о состоянии мира начиная с момента запуска.
              Ответить
              • Через 2 года и примерно 3 месяца посмотри.
                Ответить
                • Пробовал на винде ставить Sleep(INFINITE). Он продлился толи 11 дней, толи 27 дней. Точный период не помню. Вот такой вот в винде бесконечный слип
                  Ответить
                  • Винда настолько быстрая, что бесконечный цикл прогоняет за конечное время!
                    Ответить
                    • бесконечный сон, а не цикл
                      Ответить
                      • Винда спит бесконечно быстро!
                        Ответить
                        • Раз это ветка для игры в ассоциации, то я продолжу:
                          Винда бесконечно спит.
                          Ответить
                  • А потом что? Вылетел с экскепшеном?
                    Ответить
                    • А ПОТОМ ШИНДОУЗ ПЕРЕУСТАНОВИЛСЯ ВЕДЬ ЭТО ЖЕ ТАК ПРОСТО ПЕРЕУСТАНОВИТЬ ШИНДОУЗ
                      Ответить
                    • >А потом что?
                      Ну если это был слип, то он просто как-будто бы закончился, а если это было ожидание события, то оно вернет WAIT_TIMEOUT, если до конца как-бы конечного бесконечного периода событие не пришло.
                      Ответить
                      • На самом деле константа INFINITE имеет некоторое целое значение, по достижению которого и происходит разслипание.
                        Ответить
        • И при очередном обновлении, если разработчики решат, что 0 в степени 0 должно бросать исключение...
          Ответить
          • Это не разработчики решили, а математики.
            Ответить
            • мой калькулятор вообще выдаёт 0 лол
              Ответить
              • TCalc.pas
                ?
                Ответить
                • А мой любимый калькулятор (ghci) выдает вот такую антиматематическую хуйню:
                  Prelude> 0^0
                  1
                  P.S. Ненавижу кнопкотыкательные калькуляторы, haskell, python, bc ведь намного удобней ;)
                  Ответить
                  • Скачай мой калькулятор, в нём не надо кнопки тыкать.
                    Ответить
                    • Ага, уже потестил ;) Я считаю, что его интерфейс прекрасен, по сравнению с типичными калькуляторами. Даже переменные есть.

                      Но по сравнению с тем же ghci есть минус - нету лога, не совсем удобно присваивать переменные - надо тыкать мышкой.
                      Ответить
                      • > не совсем удобно присваивать переменные - надо тыкать мышкой.
                        Действительно, никак кроме мыши. Тарас не осилил свойство для фокусировки контрола табом?
                        Ответить
                      • Можно кстати заделать так чтобы Ctrl+Enter писал в новую строку.
                        PS Лол, на второй монитор не могу переместить окно.
                        Ответить
                        • Блджад, и вправду нет кнопки "перенести фокус на поле ввода".
                          На двух мониторах не тестил. Окно любит по краю экрана выравниваться просто, могу для расширенного режима убрать.
                          Ответить
                      • Мышкой можно не тыкать, если фокус и так на поле ввода, то можно стрелочками перемещаться по переменным, и фокус с поля ввода не уйдёт
                        Ответить
                    • Предложение - запилить оператор присваивания, чтобы можно было делать вот так:
                      a := 100500
                      a*5+2
                      Ответить
                  • fai@fainote:~$ bc
                    0^0
                    1
                    Ответить
                  • > кнопкотыкательные
                    Они так готовятся к эпохе планшетов, шиндошс 8 и тотального сенсорного интерфейса на митро.
                    Ответить
                • http://tarasber.narod.ru/MiniCalc.rar
                  Кстати, кто минуснул-то про математиков? 0^0 действительно не определено официально.
                  Ответить
                  • >MiniCalc.rar
                    Неплохо. Люблю минимализм - просто и со вкусом.

                    >Но по сравнению с тем же ghci есть минус - нету лога
                    Но я предпочитаю js-консоль хрома или оперы - там и autocomplete, и структуры, и функции, и регэксы, даже dom, даже http.
                    Еще есть путхон, скала в режиме интерпретатора
                    Ответить
                    • Дык любой интерпретатор уделывает гуитыкательные калькуляторы. И по юзабилити, и по возможностям, и по расширяемости. Ну и кстати обучения как такового не требуется, арифметика почти во всех языках интуитивно записывается, а синусы недолго запомнить.
                      Ответить
                      • > любой интерпретатор уделывает гуитыкательные калькуляторы. И по юзабилити, и по возможностям, и по расширяемости.
                        Любой? Та ну?
                        http://brainfuck.tk/
                        Ответить
                  • Под линупс не заводится.
                    Ответить
                    • > Под линупс не заводится.
                      man virtualbox

                      У меня все работает, сам проверял.
                      Ответить
                      • Лол. fpc не собирает, даже лазарус попробовал натравить. А exe-шник даже под вайном не вурычит.
                        Ответить
                        • Только Delphi 7, только Тарас
                          Ответить
                        • Так там винапишный хардкор у Тараса. Само собой лазарус не соберет.
                          Ответить
                          • Там ещё и ассемблерные вставки в intel-синтаксисе.
                            Ответить
                            • {$OPTIMIZATION PREMATURE}

                              или в Delphi 7 такая директива не поддерживается и приходится делать преждевременную оптимизацию вручную?
                              Ответить
                              • Тарасов код, у него спрашивай. Я вообще это хочу fpc/lazarus'ом собрать.
                                Ответить
                                • собирается с тонной ворнингов и падением на старте
                                  Ответить
                                • function nSqrt;
                                  asm
                                    dec edx
                                    jnz @error
                                    fld tbyte ptr [eax]
                                    fsqrt
                                    ret
                                    @error:
                                    fld tbyte ptr [NAN]
                                  end;

                                  Делфи не умеет в оптимизацию? Хотя интерактивному калькулятору она нахуй не нужна. Пользователь все равно самое медленное звено.
                                  Ответить
                                  • http://www.govnokod.ru/2172
                                    Ну и для разбавления дельфовой атмосферы:
                                    http://www.govnokod.ru/2222
                                    Ответить
                                  • Я уже тоже посмотрел туда. Сплошные велосипеды в шоколаде.
                                    Ответить
                            • Да, сейчас бы я так делать не стал.
                              Ответить
                  • > http://tarasber.narod.ru

                    Нашёл там у тебя интересную игру OnOneWheel. Можешь скинуть исходники?
                    Ответить
                    • Да, а зачем? Только там тоже говно есть - при любом изменении кода, добавлении новых переменных, например, сохранёнки перестают работать. Потому что в них записаны указатели на глобальные переменные.
                      Ответить
      • >Или вот так 0^0
        Поправлю тебя, тк в питоне: 0**0
        Ответить
    • class FuckUp(object):
        def __eq__(self, other):
          return self is not other
      h = FuckUp()

      Пример надуманный, но все же. Сравнение может оказаться трудоемкой операцией, если применять такой подход к первому попавшемуся "неизменному" объекту.
      Ответить
      • FuckUp() == FuckUp() работает как раз таки нормально :)
        Ответить
        • Ну сделать
          def __eq__(self, other):
            raise NotImplementedError

          тоже никто не мешает. Более того, такое, имхо, даже более вероятно.
          Ответить
          • def __eq__(self, other):
            return other == self
            Ответить
            • Если other не определяет __eq__ вообще или кидает NotImplemented для нашего класса - уйдет в рекурсию.
              Как и в случае двух экземпляров, да. =)
              Ответить
    • http://ideone.com/v4EmCk
      h = 1
      while h == h:
        print "in forever cycle"
        h = float("nan")
      print "ops..."
      Ответить

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