Zacznijmy od treści zadania:
Na początek zaimportujmy dane
Upewniamy się, że w folderze naszego projektu jest plik, następnie importujemy go używając funkcji with open.
Funkcja with open pozwala działać na pliku bez konieczności zamykania go funkcją close().
Autorzy zadania specjalnie udostępniają nam plik z przykładowymi danymi, byśmy mogli sprawdzić poprawność
działania kodu na mniejszej ilości danych. Wobec tego zaimportujmy plik przyklad.txt,
a dopiero oddając zadanie podmieniamy go na dane ostateczne.
Treść pierwszego zadania:
Jak widzisz, autor podaje rozwiązanie dla przykładowego zbioru danych!
Potrzebujemy zatem poza pętlą while dodać licznik, który pozwoli nam zapisać ilość liczb, które są potęgami trójki.
Istotne, aby nie wpisywac go wewnątrz pętli, inaczej nasza pętla po każdej iteracji będzie ZEROWAŁA licznik.
W tym zadaniu wykorzystuję wiedzę o logarytmach
Przypomnienie:
Logarytmy możemy czytać na zasadzie: do jakiej potęgi trzeba podnieść a, żeby wyszło b.
Dzielenie logarytmów:
W tym zadaniu dzielę logarytmy po to, by uzyskać logarytm o podstawie 3 z liczby z pliku.
Co można zrozumieć przez "do jakiej potęgi muszę podnieść trójkę, by uzyskać liczbę z pliku?"
Idąc tym tokiem rozumowania, chcemy uzyskać liczbę całkowitą, wtedy będzie to oznaczało, że liczba z pliku jest potęgą trójki.
Wobec tego, porównuję nasz wynik z liczbą całkowitą.
Przyjrzyjmy się temu w debbugerze:
Jak widzimy wynik dzielenia wynosi 6.0, co jest równe 6.
Na początku używam też int(line)
Funkcja ta zamienia nam String na Int.
Na koniec chcemy, aby przy naszym kolejnym wykonaniu pętli while, pobrała ona nową linię, zapisujemy więc
line = file.readline().strip()
Super! Teraz zapiszmy odpowiedzi do nowego pliku, nazwijmy go wyniki.txt
W pierwszym kroku tworzę nowy plik tekstowy "wyniki.txt" oraz go otwieram.
Następnie zapisuję nasz wynik str() pozwala przekonwertować naszą liczbę na string
A jak coś już otwieramy, to pamiętajmy, by zamknąć ;)
Cały kod można pobrać tutaj:
Odpowiedzi zapisz w pliku tekstowym "wyniki.txt"