Copperhead
W ramach dalszej praktyki #programowanie w #python napisałem prosty program dodający lub odejmujacy liczbę dni od dzisiejszej daty. Nie jest to może coś niesamowitego, ale satysfakcja osobista ogromna ( ͡° ͜ʖ ͡°) wrzucam poniżej, może ktoś się zainspiruje lub podejmie rozbudowy w ramach własnej praktyki. Miłego. https://pastebin.com/rN65zD08
1
  • Najlepsze
  • Wszystkie komentarze
Zazu
@Copperhead daty nie printuje się w taki sposób. Każdy obiekt daty ma metodę, która pozwala zwrócić dowolny format daty w oparciu o parametry. Poczytaj o strftime. Stringi też można ładniej łączyć. Ogólnie nie jest źle ale zawsze można lepiej. 3maj się i rozwijaj się
2
ProfesorBigos
Nadmiarowe jest użycie funkcji (i to 2) których ciało ma jedną linijkę logiki


@Copperhead: Muszę się ostro sprzeciwić tej poradzie od @Zazu . Kod masz pisać tak, żeby bez problemu można było go przeczytać. Jeśli nazwa funkcji dobrze oddaje przeznaczenie kawała kodu, to należy tak to napisać. Nie dostaje się premii uznaniowej za oszczędzanie znaków w pliku źródłowym.
Powiedzmy, że masz kod w którym używasz wzoru na obliczenie pola
2
Tank1991
@Copperhead: jak na początek to uadnie
1
Copperhead
@Joachim_Mordechaj: Oczywiście, że mogłem, ale.... Staram się jednocześnie podczas nauki pythona szlifować angielski bo to w końcu główne angielski jest wykorzystywany w programowaniu. ( ͡° ͜ʖ ͡°)
1
Zazu
@Copperhead no więc jedziemy dalej z review. Nadmiarowe jest użycie funkcji (i to 2) których ciało ma jedną linijkę logiki. Skoro juz używasz nadżędnej zmienney days_ to zŕób ifa bez funkcji robiącego plus lub minus na dacie i w ostatniej linijce wyprintuj tylko sformatowany wynik. Zredukujesz kod o jakieś 70%
1
l.....k
l.....k
imho:
1. pozbądź się spacji z daty, poprzez join;
2. dodaj spację w wpisie liczby dni, po ":" ;
3. dodaj dzień tygodnia; jaki jest dziś i jaki to będzie w wyznaczonej dacie.

wtedy wszystko bedzie ładnie, ale to tylko moje zdanie.
1
ProfesorBigos
@Zazu: Oczywiście, że nie przejdzie code review, bo autor się dopiero uczy i nie ma jeszcze płynności w posługiwaniu się językiem. Ale miał właściwą intuicję, że skoro program może pójść dwiema ścieżkami, w zależności od wyboru użytkownika, to każdą może reprezentować inna funkcja. Najwyraźniej inaczej rozumiemy to Zen.
Jeśli nazwa funkcji dobrze opisuje jej działanie, to nie potrzebuję zaglądać w jej bebechy. A poza tym żyjemy w 2021 roku i
1
arysto2011
@Copperhead: Nie pracuj na danych czasowych jak na stringach. Od razu transformuj do obiektów time i datetime i przeprowadzaj wszystkie manipulacje datami na nich.
1
Copperhead
@arysto2011: Dziękuję za wskazówki ( ͡° ͜ʖ ͡°)
1
arysto2011
@Copperhead: Generalnie czas i obliczenia na czasie to skomplikowana materia. Dochodzi tutaj wiele aspektów takich jak strefy czasowe, różne kalendarze, sekunda przestępna, rok przestępny, kilka standardów typu UTC, GMT. Oj nie jest łatwo.
1
Copperhead
@arysto2011: Nikt nie mówił, że będzie
1
Copperhead
@Tank1991: to kolejny już z takich programów. Dziękuję :) sam próbuje dojść do rozwiązania. Miałem problem ze zwróceniem daty w formacie który jest teraz. Chcąc zmieścić wszystko w jednej linii program zwracał mi datę w taki sposób ( '2021', "-", '7', '-', '29'), chociaż wszystko było na moje oko w porządku. Może wiesz gdzie mógł być problem?
0
Tank1991
( '2021', "-", '7', '-', '2


@Copperhead: wyglada jakbys printowal zmienna typu tuple zamiast str:

a = ( '2021', "-", '7', '-', '2)
print
0
Copperhead
Dzięki za wskazówki, na pewno sprawdzę w praktyce i dam znać :)
0
Copperhead
@Zazu: Wiadomo, że moje rozwiązanie nie wyczerpuje tematu :) siądę jeszcze do tego i spróbuję rozbudować o dodatkowe funkcje, jednocześnie zwracając uwagę na ulepszenie tego co już jest ( ͡° ͜ʖ ͡°)
0
Copperhead
@Zazu: A no i dziękuję :)
0
Copperhead
@Zazu: Okej :) wiem o co chodzi
0
Copperhead
@ProfesorBigos: Dziękuję za radę ( ͡° ͜ʖ ͡°) każda jest mile widziana. Oczywiscie przyznaje Ci racje bo sam tez tak uwazam
0
Zazu
@ProfesorBigos przeczytaj Zen pythona a później podyskutujmy jak tworzenie nadmiarowych funkcji poprawia zrozumienie kodu. Dajmy na to, że jego projekt urośnie i nagle definicja funkcji nie będzie w module wykonywalnym tylko będzie importowana z innego modułu. Fajnie się analizuje kod skacząc w IDE do jednolinijkowych funkcji w 4 modułach dalej? Nie mówiąc już o zasadzie DRY czyli Do Not Repeat Yourself, która w w/w przypadku jest złamana kilkukrotnie. Rozdzielanie IF'a a
0