Python - Juniorzy - Przygotowanie

 Przygotowanie rozwiązania zadania:

  1. Znaleźć zadanie na stronie olimpiady juniorów:
  2. Stworzyć oddzielny folder dla tego zadania.
    • Resztę kroków wykonujemy i zapisujemy w folderze zadania.
  3. Pobrać treść zadania (pdf)
  4. Stworzyć pusty plik rozwiązania (main.py)
  5. W pliku rozwiązania
    • stworzyć funkcję logującą
    • zalogować że plik się uruchamia 
  6. Sprawdzić że plik rzeczywiście uruchamia się i loguje to co nakazaliśmy
    • Z konsoli cmd:
      • python main.py
      • ewentualnie python3 main.py
    • poprawić ewentualne błędy, dodać brakujące biblioteki
  7. Stworzyć pliki z przykładowymi danymi testowymi
    • Zwykle zadanie ma trzy przykładowe testy. Tworzymy pliki tekstowe:
      • test-0.txt
      • test-1.txt
      • test-2.txt
    • Wypełniamy danymi z treści zadania. W przykładowym zadaniu dane są opisane jako:
      • Wejście dla testu cia0a
      • Wejście dla testu cia1a
      • Wejście dla testu cia2a
  8. Stworzyć plik tekstowy .bat do uruchamiania testu numer 0.
    • test-0.bat
      • W środku jedna linijka
        • python main.py < test-0.txt
      • Linia ta oznacza uruchomienie skryptu rozw.py i skierowaniu na jego wejście danych z pliku test-0.txt
      • Pamiętaj o zmianie rozszerzenia pliku z .txt na .bat.
      • Najlepiej skopiować plik z poprzednich zadań i zaadaptować.
    • Uruchom test-0.bat z konsoli i ewentualnie popraw.
  9. Stwórz pozostałe pliki testów:
    • test-1.bat
    • test-2.bat
    • sprawdź czy się uruchamiają.
  10. W pliku main.py dodaj wczytywanie danych wejściowych.
    • Wczytaj wszystkie linie wejścia
      • Wypisz co wczytałeś.
    • Zapisz wartości na zmiennych
    • Podziel zbiory na tablice.
    • Zamień napisy na liczby tam gdzie dane mają znaczenie liczbowe.
      • Wypisz wszystkie wczytane dane
      • Postaraj się aby było co wypisujesz bez zaglądania do kodu.
        • Wypisuj wartości oraz nazwy zmiennych.
  11. W pliku main.py dodaj wypisywanie wyniku.
    1. Wprost wypisz wynik podpowiadany w pierwszym teście.
  12. Sprawdź czy dane z wszystkich przykładowych testów wczytują się poprawnie.
Oto plik main.py dla zadania z 2023 roku. Możesz oprzeć się tworząc rozwiązanie swojego zadania.

import sys

# funckja logująca którą można łątwo wyciszyć
# poprzez zakomentowanie dwóch lini
def info(data):
    import logging
    logging.warning(data)
    pass


# gdy moduł import logging jest niedostępny
# możemy logować też tak
# jest to jednak trudniej zapamiętać
def info2(data):
    print(data, file=sys.stderr)
    pass


# warto widzieć że program się w ogóle uruchomił
info("start")
info2("start2")

# warto dodać tę linię
# gdybyśmy nie podali pliku z danymi wejściowymi program zatrzyma się
# będziemy widzieć w consoli co się dzieje
info("wczytuje wejscie")
line = input()
# wypisuję dane tuż po wczytaniu - łatwiej wtedy rozwiązać problemy
info("line1: "+line)
# n ma być liczbą
n = int(line)
# ważne żeby na diagnostyce było widać nazwę zmiennej. Stąd "n: "
info("n: "+str(n))

line = input()
info("line2: "+line)
a_str = line.split(' ')
info("a_str: "+str(a_str))

# a_str to tablica napisów, a potrzezbujemy liczby
a = []
for cyfra in a_str:
    a.append(int(cyfra))

# teraz a to tablica napisów
info("a: "+str(a))

# to jest informacja dla nas aby łatwiej zorientować się gdzie jesteśmy w kodzie
info("info koniec wczytywania danych")




info("koniec")
print(8)


Tak wygląda mój przygotowany folder:

Analiza zadania

Poprzednie kroki, przygotowanie testów i wczytywanie wyglądają dla każdego zadania podobnie.

Kolejnym etapem jest analiza samego zadania i rozwiązanie podanych przykładów na kartce.
  1. Weź kartkę i długopis!!!
  2. Przeczytaj jeszcze raz zadanie
    • Czy wiesz co oznaczają dane wejściowe?
    • Czy wiesz co ma być na wyjściu?
  3. Przeanalizuj dane z pierwszego przykładu
    • Czasem jest dołączony rysunek.
      • Rozumiesz go?
      • Czy umiesz zrobić rysunki dla pozostałych przykładów?
        • Zrób je.
    • Jeśli nie ma rysunku samemu zrób.
      • Może to być szkic figur geometrycznych
      • albo graf przejść między liczbami
      • albo tableka
      • ...
  4. Spróbuj rozwiązać pierwszy przykład.
    • Twój wynik zgadza się z wynikiem przykładu.
  5. Spróbuj rozwiązać pozostałe przykłądy
    • Może któryś jest łatwiejszy
    • Może któryś zawiera "podchwytliwe dane".

Comments