Языки программирования и программы.



  • Общая тема по разным ресурсам. Можно выкладывать ссылки на обучающие материалы. Или новое, полезное, занимательное.
    Также можно выкладывать результаты обучения ( промежуточные итоги и отчеты) - это полезно, пусть даже на шахматном сайте.



  • Начал смотреть по Питону Python. Самое начало.
    Столкнулся с задачей-

    current_hour = 12
    current_minute = 37
    current_section = "PM"
    due_hour = 9
    due_minute = 0
    due_section = "AM"

    #You may modify the lines of code above, but don't move them!
    #When you Submit your code, we'll change these lines to
    #assign different values to the variables.

    #Given the current time and deadline time represented by the
    #variables above, determine if an assignment is still eligible
    #for submission. An assignment is eligible if the time
    #represented by current_hour, current_minute, and
    #current_section is before the time represented by due_hour,
    #due_minute, and due_section.

    Тут трудность в том ( особенно тем, кто не знаком с их стандартом времени), что 12 афтермонинг и 12 пастмонинг не совсем поддается логическому описанию ( но тут как бы ни старались, получить логически непротиворечивую конструкцию из этих элементов не получится)- то есть 12 ам-это у низ 0 часов ночи , а 12 пм-это 12 дня.
    Я посмотрел, на сегодняшний момент эти конструкции с числом 12 рекомендуется избегать во избежание недоразумений.. Но пока я это выяснил( задача не сходилась никак), потратил более часа, ведь это вне обычной/прямой ( тупой) логики.
    Но задачка такая и ограничения- предположим, что мы пока не догадываемся об условиях и conditioning ( if, while) и т.п. Прямой перевод времени в какую-то одну переменную поначалу кажется трудным, можно строить логическими операторами, но мне показалось слишком громоздким.
    Я решил перевод времени в 1 переменную так-тут на примере переменной( время_ сейчас)

    current_time=((current_hour%12)+(12*(current_section == "PM")))*60+current_minute
    то есть тупо переводим все в минуты ☺ , но суть, что нужно было догадаться использовать оператор остаток ( модулус) для этого ( чтобы обнулить ам и пм при 12 часах)


  • T

    Остаток от деления - это интересная и в то же время очень известная и лёгкая фишка в задачах по информатике. Такие задачки щёлкал уже в детстве, благо в мат. классе учился и информатика была. Заняло 5 минут, чтобы повторить это решение.





  • По Питону начальные курсы и материалы.
    Бесплатно от Майкософт

    https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6

    Блоковый язык на основе Питона, упрощающий для новичков конструирование программы, легкий переход из блоков к коду позволяет обучаться и экспериментировать
    https://app.edublocks.org/


  • T

    Как стать Data Scientist - 8 шагов.

    0_1591744353639_main-qimg-90d84b47e941aba71704ba74c9f39b88.jpeg



  • def day_o_week(a):
      import math
      b = a.split()
      # print(b)
      month = {"March":1,"April":2, "May":3, "June":4, "July":5, "August":6, "September":7, "October":8,"November":9,"December":10, "January":11, "February":12 }
      mon = month [b [0]]
      # print (mon)
      day = int(b [1])
      # print(day)
      century = int((b [2])) // 100
      # print(century)
      year = int((b [2])) % 100
      # print(year)
      # dow = {0:"Sunday",1:"Monday", 2:"Tuesday", 3:"Wednesday",4: "Thursday",5:"Friday", 6:"Saturday"}
      # day_of_the_week = (day + math.floor(2.6 * mon - 0.2) - (2 * century) + year + math.floor(year / 4) + math.floor(century / 4)) % 7
      # (d + floor(2.6m - 0.2) - 2c + y + floor(y/4) + floor(c/4)) modulo 7
      dow = {1:"Sunday",2:"Monday", 3:"Tuesday", 4:"Wednesday",5: "Thursday",6:"Friday", 0:"Saturday"}
      day_of_the_week = (day + math.floor((13 * (mon  + 3 )) / 5) + year + math.floor(year / 4) + math.floor(century / 4) - 2 * century) % 7
      return dow[day_of_the_week]
      
    # test
    print(day_o_week('January 1 1678'))
    print(day_o_week("September 3 1955"))
    print(day_o_week("June 12 2012"))
    print(day_o_week("August 4 1843"))
    

    что -то некорректно код работает, язык Питон, это было упражнение по словарям (dictionary), вычисление по формуле дня недели, исходя из даты , спотыкается, почему-то, на 1 января 1678 дате, остальные для этого теста проходит правильно ( но не уверен, что другие пройдет правильно тоже)
    попробовал 2 немного разные формулы ( вторая осталась на всякий случай закомментированая)