•  

    #wyzwaniepython
    Ten wpis nie jest o wyzwaniu pythonowym, piszę jedynie za zgodą @GlenPL: http://www.wykop.pl/wpis/19409237/#comment-69032189
    Część osób sugerowała, że liczyła bardziej na prowadzenie w stylu kursu. Tak się składa, że ja taki prowadzę.
    https://kurykodowe.pl

    Jakieś pół roku temu zacząłem prowadzić kurs programowania w go, nieregularny, powoli, ale za rączkę. Pierwotnie miał być dla mam, ale problem w tym jest taki, że one mają swoje priorytety, a kurs w nich się nie mieści. Ja to rozumiem, ale jednocześnie z pierwotnych szesnastu zainteresowanych Pań ostatnią pracę domową rozwiązała jedna, a to już nie jest zbyt motywujące, prowadzić coś takiego dla jednej osoby.

    Założenie jest takie, że mamy projekt: program do pobrania treści z bloga jednej z dziewczyn, i teraz uczymy się od zera programowania, aby taki program móc napisać. Żadne dotychczasowe doświadczenie nie jest wymagane.

    Na razie była instalacja IDE, podstawowy program, teraz uczymy się o typach prostych. Zaraz będą stringi, a potem chyba testy, wejście-wyjście, podstawy html, biblioteki, sam program. Wszystko przeplatane takimi pierdołami jak kontrola wersji, testy, bezpieczeństwo, prywatność itp.

    Jeśli ktoś z Was byłby chętny, aby dołączyć do kursu, napiszcie w odpowiedzi. Ja zacznę publikować informacje o aktualnościach w tagu #kurykodowe
    pokaż całość

    +: M......._, GlenPL +12 innych
  •  

    Wczoraj w trójkę długo dyskutowaliśmy co dalej. I niestety postanowiliśmy zakończyć #wyzwaniepython. Głównym powodem jest oczywiście brak czasu, choć myślałem że sobie z tym poradzimy. Na pewno nie zabrakło ambicji było wręcz przeciwnie, zdawaliśmy sobie sprawę że robimy coś fajnego i dużego(ponad 600 subów!) i sprawiło nam to dużo radości. Mamy nadzieje że choć trochę się czegoś nauczyliście
    Dzięki że w tym wzięliście udział!
    pokaż całość

  •  

    #wyzwaniepython Zadanie 2.2

    W tej edycji nie ma podziału na wersję łatwą i trudną, wszyscy rozwiązujemy jedno zadanie.

    Specyfikacja

    Do napisania jest znana pewnie wszystkim gra "Kółko i krzyżyk", w wersji dla dwóch graczy, grających na jednym komputerze. Dodatkowym, utrudniającym implementację, wymaganiem jest wykorzystanie biblioteki 0MQ i komunikacja przez serwer, w dwóch oknach konsoli.

    Użyteczne przykłady można znaleźć w Sieci, np. tutaj

    Czas na wykonanie

    7 dni, do poniedziałku, 29.08.2016 (ok. 22:00)

    Tak jak poprzednio, prosimy o niepublikowanie wcześniej rozwiązań, ale zachęcamy do pytania o pomoc w tagu #wyzwaniepythonpomoc (jeśli coś jest dla Was niejasne w treści zadania, pytajcie i o to).

    Linki:

    Spam lista
    pyzmq
    Powodzenia!
    pokaż całość

  •  

    ============================
    #wyzwaniepython zadanie 2.1
    ============================

    Dziś startujemy z nowym zadaniem z nowej tematyki.

    Wątki/komunikacja między procesami

    Przejdziemy odrazu do konkretów:

    _Wersja łatwa:_
    Napisz program który przetworzy tekst Markdown na HTML. Jeden wątek pobiera wpisany tekst i wrzuca go do kolejki a drugi wątek pobiera tekst z kolejki i przetwarza na html który zapisze do pliku. Muszą wystąpić wszystkie elementy Markdown z tego kodu na Wikipedii.
    _Wersja trudna:_
    To co łatwa plus GUI i dodatkowy wątek który by to wyświetlał w okienku "na żywo"

    Czas na wykonanie zadania to dwa tygodnie(do 19.08.2016 20:00)

    Przydatne biblioteki:
    Threading
    Queue

    I chciałbym żebyście zapoznali się z naszymi uwagami dotyczącymi rozwiązań

    pokaż spoiler Od teraz będzie obowiązywać nowa numeracja zadań. będzie to: tematyka.zadanie
    pokaż całość

    +: P.....L, cruc +9 innych
  •  

    +++++++++++++++++++++++
    #wyzwaniepython Zad.3
    +++++++++++++++++++++++
    Koniec trzeciego zadania i tym samym kończymy tematyke plików. Podajcie linki do swoich programów i najlepiej gdyby były "raw"

    pokaż spoiler "raw" czyli sam tekst bez html np. pastebin.com jest to http://pastebin.com/raw/xxxxxx

    Na rozwiązania czekamy do jutra do 15:00
    Rozwiązane zadanie przez @GlenPL LINK
    oraz jego omówienie LINK
    Jak już wiadomo następną tematyką Programowanie wielowątkowe/wieloprocesowe.
    W tym wpisie zbieramy propozycje na pierwsze zadanie. Czas trwania się nie zmienił i będzie taki sam jak poprzednio(2tyg/1tyg/5dni)

    ------------------------------------
    I oficjalnie chcielibyśmy Wam przedstawić oficjalne konto #wyzwaniepython
    @wyzwaniepython
    pokaż całość

  •  

    +++++++++++++++++++++
    #wyzwaniepython Zad.1
    +++++++++++++++++++++

    Małe codereview zrobione przez @GlenPL

    Jeżeli nie ma Twojego rozwiązania na liście to albo odpowiedziałem Ci już wcześniej w komentarzu/na githubie, albo uznałem, że nie ma sensu żebym coś dopowiadał. Jeżeli uważasz, że pominąłem Twoje rozwiązanie - napisz, mogłem je po prostu przeoczyć :)

    @kater:

    pokaż spoiler ogólnie nice, ale nie podoba mi się metoda get_year i konstruktor klasy File - powinien on przyjmować 2 argumenty pozycyjne, a nie przyjmuje żadnego

    @l__p:

    pokaż spoiler https://ghostbin.com/paste/y3spe łap output błędów z flake8, postaraj się poprawić, podzielić metodę split_files_in_dirs na kilka mniejszych i wrzuć kod - Twoje rozwiązanie wydaje się ładne, ale jest niestety zupełnie nieczytelne :)

    @terror_blade:

    pokaż spoiler ścieżkę przyjmuj jako argument, nie hardkoduj jej w kodzie programu

    @brunix:

    pokaż spoiler zostawiłem Ci kilka komentarzy na githubie, spróbuj poprawić kod stosując się do nich

    @zranoI:

    pokaż spoiler zostawiłem jeden komentarz, ale za to dosyć ważny komentarz :)

    @Salieri_:

    pokaż spoiler łoo panie ale piękny prostokącik kodu ( ͡° ͜ʖ ͡°) weź to podziel na mniejsze funkcje z dokładnymi nazwami

    @Statek_kosmiczny_z_kosci_sloniowej:

    pokaż spoiler w 3 linijce hardkodujesz ścieżkę w linijce 6 masz niepotrzebne spacje wokół nawiasów (w niektórych jezykach to dobra praktyka, ale w pythonie tego unikamy) linijka 6 użyj generator expression linijka 10 niepotrzebna pusta linijka linijki 9 to 13 - nie używaj range(0, len(items)) a potem [index] - w pythonie jest coś tak wspaniałego jak funkcja enumerate - wygoogluj ją! :) linijka 15 item zamiast i linijka 16 niepotrzebne () linijka 16 nazwa a jest nieznacząca - co to jest a? zmień ją

    @orestlenczyk:

    pokaż spoiler funkcja hashfile: do otwarcia pliku używaj with linijki 38 i 43: wykomentowany kod - jeżeli nie jest potrzebny to po prostu go usuń

    @BoKoR:

    pokaż spoiler funkcje check_file i move_file: usuń return na końcu - python i tak domyślnie zwróci None nazwy_pisz_snake_case - Twój kod jest mało czytelny, jest za bardzo zbity! _ w nazwach dodaje przejrzystości, dodatkowe kilka pustych linijek też by pomogło w prawie wszystkich printach masz niepotrzebne () do łączenia wartości w jeden string używaj funkcji str.format

    @abdulafaja:

    pokaż spoiler mój faworyt, nie przeglądałem wszystkiego, ale całość raczej bez zarzutu, duży plus dla Ciebie mirku :)

    @anonymous_derp:

    pokaż spoiler używaj str.format w pythonie przy ifach nie dodajemy () sporo niepythonicznych konstrukcji, doświadczenie z C? :) if (os.path.isdir(path + f)) == False: -> if not os.path.isdir(path + f):

    @Dewastators:

    pokaż spoiler używaj str.format nie bój się zostawiać pustych linijek w kodzie :) linijka 32 - wykomentowany kod - po prostu go usuń funkcja gethash jest za długa, można ją zapisać na 4 linijkach - spróbuj! użyj with, block_size wrzuć do argumentów funkcji podziel kod na krótkie, precyzyjnie ponazywane funkcje - pozbądź się komentarzy takich jak linijki 41-42

    @ElGovanni:

    pokaż spoiler brzydka pętla w stylu C: zmień ją na 'for x in nor:' używaj str.format from datetime import datetime trochę by poprawiło czytelność

    @Jessamine:

    pokaż spoiler linijki 30 i 33 mają po 162 znaki :o rozbij je na 3 linijki, a najlepiej wyciągnij to do funkcji pomocniczej - google: DRY linijka 25 - ? :)

    @NostalgicznyPasterz:

    pokaż spoiler nazwy_metod_snake_case używaj str.format linijka 12: otwierasz plik i nigdy go nie zamykasz; używaj with

    @oskar_15:

    pokaż spoiler linijka 9, 23: str.format linijka 7 jest niepythoniczna if os.path.exists(date) is False: -> if not os.path.exists(date): linijki 24-26: a może by tak... customowy context manager? czy zbyt hardkorowo? :D

    @natjes:

    pokaż spoiler kod jest za bardzo rozbity :) linijka 12: niepotrzebne, with robi to za Ciebie linijki 46-47 masz 4 poziomy wcięć, trochę dużo - może można to wyciągnąć do osobnej funkcji? linijka 46: nie używaj _ jako nazwy zmiennej (jest kilka powodów, jak Cię to interesuje to możesz googlować) linijka 70: ? :) + dodatek, jak jesteś ambitny to wygoogluj contextlib.suppress i pomyśl jak tego użyć w Twoim kodzie (linijki 36-39, 63-66) :)

    @orbitpl:

    pokaż spoiler kod jest za bardzo zbity zobacz output z flake8: https://dpaste.de/cP1k

    @g33k:

    pokaż spoiler nice :) przerzuć funkcje pomocnicze nad maina używaj with do otwierania plików

    @kielus:

    pokaż spoiler ładne rozwiązanie, output flake8: https://dpaste.de/7Vo4 ode mnie: nazwy zmiennych/metod sake_case w 15 linijce niepotrzebne () ładne generatory :)

    @Engineer_Mordimer:

    pokaż spoiler linijki 12-12: łoo panie xD warunek wyciągnij do funkcji pomocniczej, może podziel to na kilka linijek? linijka 11 nazw zmiennych nigdy nie pisz z wielkiej litery linijki 13, 19, 20: zmień i na len(files) :) używaj str.format

    @Tysiak:

    pokaż spoiler nazwy metod: w_pythonie_nazwy_metod_piszemy_snake_casem, camelCasePiszemyTylkoNazwyKlas :) linijka 14: to wypisywanie osobiście chętniej widziałbym w funkcji wyższego poziomu - czyli w pętli między 20 a 21 linijką linijka 20: używaj funkcji str.format '.\\result\\{}\\{}'.format(date.strftime("%Y"), date.strftime("%m")) - dzięki temu lepiej to wygląda i (jestem w 99% pewny :p) możesz pominąć castowanie str() stringi w kodzie - python pozwala na używanie do ich tworzenia zarówno ' ' jak i " ", ale bardziej pythoniczne jest używanie ' ' - używanie " " to nie jest oczywiście błąd, ale nie jest to dobra praktyka linijka 29: list to zarezerwowane słowo pythona, nie należy go używać jako nazwy zmiennych linijka 31: otwierasz plik i go potem nie zamykasz: używaj with metoda hard: słabo nazwana :D metoda hard: struktura danych jaką powinieneś użyć to nie list+dict, ale Counter (collections.Counter)


    @Calvert:

    pokaż spoiler ajajaj, te komentarze :( linijka 9: zamiast dawać komentarz to nazwij zmienną current_path - i cała niepewność znika! tak samo w 10 i 11 linijka 16: znów daj dokładną nazwę zamiast komentarza linijka 13: tutaj to po prostu usuń komentarz linijki 23-25: użyj with do otwarcia pliku używaj str.format linijka 18: zmień nazwę zmiennej i usuń komentarz - nie będzie juz potrzebny

    @azetka:

    pokaż spoiler linijki 6, 12-14: jeżeli chcesz to zrobić ładniej to wygoogluj collections.defaultdict - ale nie musisz, to trochę bardziej ambitne :) linijka 18: ten warunek jest zawsze spełniony - usuń go, usuniesz też dzięki temu jeden poziom wcięć linijka 7: a może by tak zamiast dawać komentarz to zrobić z tego funkcję z precyzyjną nazwą? :) linijki 24, 25: zrób oba przypisania na w jednej linijce linijka 16: zmień for filehash in hashes.keys(): -> for (filehash, filepaths) in hashes.items(): wtedy nie musisz w linijce 17 wyciągać tego osobno - to bardziej pythoniczne linijka 37: tak samo, items zamiast keys i wtedy w 38 path in paths


    Czytelniejsza wersja

    Jesli brakuje twojego kodu sprawdz Tu i Tu jeśli tam go nie ma to przeczytaj cały post jeszcze raz. Wyjaśnienie masz na początku.
    pokaż całość

    +: GlenPL, J.......l +14 innych
  •  

    Nie podoba mi się kierunek w jakim poszliscie z #wyzwaniepython. O co chodzi? O wyzwanie, a raczej o jego brak. Przedział czasowy jest spory, można napisać coś ciekawego, a wy postanowiliście ograniczyć się do zadań, które przypominają mi trochę takie typowe "ćwiczenia", które można znaleźć w tutorialach - otwórz plik, zapisz coś do niego, zamknij, nazwij go dzisiejszą datą, skopiuj do folderu nadrzędnego, powtórz 10 razy.
    Nie tędy droga, zadania powinny być ciekawe, dające pole do popisu. Czemu chcecie uczyć operacji na plikach? Parę minut z dokumentacją i wszystko jasne. Rozwijajmy się w tym co najważniejsze: tworzeniu algorytmów, szukaniu wydajnych sposobów rozwiązywania problemów, odnajdywaniu niestandardowych ścieżek.
    Poznać zawartość biblioteki można łatwo, nauczyć się rozwiązywać problemy już nie.
    pokaż całość

    •  

      @Trevize: chętnie przyjmiemy. Sądze, że pomysły powinnismy zacząć zbierać najpóźniej pojutrze. Aktualnie dyskutujemy ze sobą nad tym, co czytamy w komentarzach i nad dalszym rozwojem. Mamy jedno zadanie od jednego z uczestników, ale wymaga wysyłania rozwiązania na serwery pewnej firmy i zostawiliśmy je na razie na później.

      Wyszedłem z pomysłem, by zamiast robić trzy zadania, zrobić jedno na trzech poziomach trudności, tak żeby ten najniższy był dostępny dla wszystkich, a ten najwyższy wymagał dużego zaangażowania i dodatkowej wiedzy (czyli np. (to trudno przetestować i myślę, że taki pomysł się nie przyjmie, ale tego typu stopniowanie mam na myśli) łatwe: pong dla dwóch osób na jednym komputerze, średnie: pong dla dwóch osób, ale przez sieć, trudne: serwer i klient + sztuczna inteligencja, by obsłużyć graczy, którzy nie mają osoby do pary - w tym przypadku można by zestawiać ze sobą sztuczne inteligencje ;-) ). pokaż całość

    • więcej komentarzy (30)

  •  

    ========================
    #wyzwaniepython Zadanie 01
    ========================

    W ankiecie wygrała 3 opcja więc oto pierwsze zadanie w historii #wyzwaniepython

    Otrzymujesz katalog zawierający 1000 plików o losowych nazwach które są wypełnione 3 losowymi znakami. Twoim zadaniem jest:
    Wersja łatwa
    -Odczytać rok i miesiąc modyfikacji pliku
    -skopiowac wszystkie pliki z danego roku do do jednego katalogu a poźniej to samo dla miesięcy
    ========================
    Wersja trudna
    -To co łatwa
    -Znaleźć wszystkie duplikaty.
    ========================
    Przydatne biblioteki:
    Time
    os.path
    Czas na wykonanie to 2 tygodnie tj. do 17.07.2016 wtedy też opublikujemy wpis gdzie będziecie mogli wstawić linka do swojego programu. Nie publikujcie proszę wczesniej rozwiązań bo zepsujecie zabawę.
    Linki:
    Pliki testowe
    Github
    Spam lista

    pokaż spoiler Jeśli ktoś skonczy szybciej to niech poczeka na innych, jeszcze bedą okazje by się wykazać.
    pokaż całość

  •  

    Dziś głosujem na pierwsze zadanie z #wyzwaniepython!!
    Razem z @GitLog zebraliśmy 4 propozcje i z nich wbieramy jedną.

    Opcja pierwsza
    Łatwe:
    wyszukiwarka zduplikowanych plików i potem opcja ich usunięcia
    Trudne:
    To co łatwa plus obsługa archiwów.
    --------------------------------------------------------------------------------------
    Opcja druga
    wersja łatwa:
    Wyszukanie rekurencyjnie wszystkich obrazków w danym katalogu
    i przeniesienie ich do w inne miejsce, zmiana nazwy.
    wersja trudniejsza:
    Wersja łatwa plus
    Wykorzystanie biblioteki PIL/pillow - zmiana rozmiaru obrazków,
    np. dopasowanie do rozmiaru 500x500 px/nałożenie jakiegoś filtru.
    --------------------------------------------------------------------------------------
    Opcja trzecia
    Łatwe: organizacja plików w podkatalogi na podstawie daty utworzenia.
    Trudne: to co w łatwym + wyszukiwanie duplikatów.
    --------------------------------------------------------------------------------------
    Opcja czwarta
    wersja łatwa
    Rekurencyjne wyszukiwanie plików w danym katalogu i zrobienie
    histogramu w konsoli z rozszerzeniami.
    wersja trudniejsza
    Histogram w matplotlib.
    --------------------------------------------------------------------------------------

    Głosujemy do 21 dziś wieczorem!

    pokaż spoiler Zauważyliśmy że część osób sieje panike że sobie nie poradzą. Spokojna wasza rozczochrana. Do każdego zadania dostaniecie przdatne linki i pamiętajcie że google nie gryzie ;)
    pokaż całość

    Którą bramkę wbierasz?

    • 50 głosów (22.52%)
      Numer jeden
    • 51 głosów (22.97%)
      Numer dwa
    • 79 głosów (35.59%)
      Numer trzy
    • 42 głosy (18.92%)
      Numer cztery
  •  

    Od wczoraj wiele się wydarzyło, przede wszystkim razem z @GitLog jesteśmy pozytywnie zaskoczeni waszym odzewem ponad 550 subów #wyzwaniepython w niecałe 24 godziny. Dzięki wielkie!!
    Teraz myślimy nad pierwszym zadaniem i prawdopodobnie bedzie to coś z plikami. Czekamy też na propozycje z Waszej strony. Propozycje z najwieksza ilością plusów trafią pod głosowanie. Na Wasze zadania czekamy do 23:59 w sobote, a do 21:00 w niedziele głosujemy.
    Małe F.A.Q:
    1. Jaka wersja #python?
    Doszlismy do wniosku że najlepiej będzie jak obie wersje będą akceptowane. (3.5 i 2.7)
    2. Co ze spam listą?
    Już powstała. Zapisujcie się TU

    Pozwolę sobie zawołać osoby plusujące wczorajszy wpis.

    #wyzwaniepython
    pokaż całość

    •  
      l............e

      0

      @tptak: no dobra ale w takiej sytuacji to po prostu błąd, poza tym jeśli używasz docstrings to raczej trudno w Pythonie usunąć metodę a zostawić komentarz, trzeba by to zrobić specjalnie...

    •  

      @linux-magazine: @rotero: może trochę zmienię, co napisałem: komentarze nie czynią kodu czytelnym, kupa z komentarzami to wciąż kupa. Jeśli czujesz, że warto się wytłumaczyć w komentarzu, tłumacz się, ale zadbaj, żeby kod był czytelny i zrozumiały bez komentarzy.
      Znajomy miał swego czasu taką praktykę w pracy, że gotowy kod pokazywał komuś z innego zespołu. Jeśli nie byli w stanie zrozumieć, co kod robi, poprawiał, aż byli.
      Obecnie pracuję w około sześcioletnim projekcie, gdy przeglądasz kod, widać kto był dobry, a kto był skrajnym niechlujem. Najczytelniejsze fragmenty zwyczajnie nie wymagają komentarzy, a nieczytelne i niezrozumiałe mają komentarze równie mało użyteczne.
      pokaż całość

    • więcej komentarzy (64)

  •  

    Mirki ruszamy z nowym tagiem #wyzwaniepython
    Na czym to polega? To proste. Raz na dwa tygodnie wybieramy drogą głosowania zadanie i każdy pisze do tego program w #python a potem będziemy oceniać kod innych. Zadania(zwane też projektami) będą na dwoch poziomach. Łatwy i trudny(który będzie rozwinięciem łatwego). Czas na wykonanie kazdego to 14 dni.

    Jako że są to początki( Pomysł zrodził się wczoraj ) razem z @GitLog jesteśmy otwarci na propozycje.
    Tu macie więcej informacji
    To ma być #naukaprogramowania ale bez pisania helloworld.
    Dodajcie #wyzwaniepython do obserwowanych.
    Ludzi z #programowanie również zapraszamy.
    pokaż całość

Ładuję kolejną stronę...

Archiwum tagów