Pierwsze próby – ocena kodu

0

Czołem!

Chciałbym poprosić, by ktoś rzucił okiem na to, co do tej pory udało mi się napisać w Pythonie. Wiem, że to niewiele i kodu jest tam dużo więcej niż mogłoby być, ale zacząłem jakiś miesiąc temu od zera.

http://github.com/fredericullio/Projects

Pisałem to w jupyter notebooku, używam tam sporo funkcji clear_output, więc chyba najlepiej będzie to też w nim sprawdzać.

0

Rób sobie do wszystkiego testy, bo teraz to raczej na tych grach nie można polegać:) Raz Masz importy w definicji funkcji i Używasz mutowalnej listy jako default argument:

    def __init__(self, contents=[]):
        self.contents = contents

a to jest no, no:).
Jak nie Rzeźbisz data science to Pisz w PyCharm, jest dużo lepszy do "zwykłej" deweloperki.

0

Tutaj masz taki kod

if win_check(board, char):
   print("Congratulations,",name,"! You've won!")

A zaraz niżej masz kod identyczny tylko dla drugiego gracza.

 if win_check(board, char_2):
                    print("Congratulations,",name2,"! You've won!")
                    break

pomyśl jak to można zdeduplikować (np. wydzielić funkcję, która będzie drukować zwycięstwa dla dowolnego gracza?). No i możesz mieć dwuelementową listę graczy i odpalać na obu elementach tę funkcję, zamiast ręcznie robić ifa dla każdego gracza. (fajne ćwiczenie możesz zrobić - co jeśli graczy byłoby np. 3 zamiast 2?)

        name = input('Player 1, please, choose your player\'s name')
        name2 = input('Player 2, please, choose your player\'s name')

Tak samo tutaj - stringi ci się powtarzają. Ogólnie masz mnóstwo tego typu duplikacji, co jest pisaniem na krótką metę (a przecież możesz te stringi wydzielić choćby do jakiejś stałej).

Zrób eksperyment myślowy: wyobraź sobie teraz, że masz przetłumaczyć wszystkie wyświetlane na ekranie na teksty na język polski.

Już widzisz problem? Duplikują się, więc więcej będziesz mieć do roboty w razie potrzeby zmiany.

print('Please, enter a valid input.')

No i te printy... weź teraz zrób ćwiczenie i np. zrób z tej aplikacji aplikację okienkową. I to w ten sposób, żeby ta logika, którą masz mogła działać równocześnie w konsoli, jak w okienkach.

Widzisz już problem? Mieszasz sposób prezentacji danych (print) z logiką gry.

Wiem, że to niewiele i kodu jest tam dużo więcej niż mogłoby być, ale zacząłem jakiś miesiąc temu od zera.

Jeśli dopiero miesiąc temu zacząłeś programować, to masz jeszcze dużo czasu, żeby się nauczyć.

Swoją drogą zastanawiam się, czemu każdy kod osób początkujących wygląda podobnie - masę kodu kopiuj-wklej i drabinki ifów. Czy to jest naturalny odruch osoby zaczynającej programować? (ja już szczerze mówiąc nie pamiętam, jak pisałem na początku). Czy może jakaś infekcja z tutoriali, w którym takiego pisania uczą? Bo to aż takie typowe. Kod, który jest strasznie sztywny i który widać, że został pisany, że ktoś pisał tylko rzeczy od A do C to co sobie założył.

1 użytkowników online, w tym zalogowanych: 0, gości: 1