Podstawy
Wczytywanie plików bez znanego rozmiaru, pojedyncze elementy
# Tworzymy listę dynamiczną
dane = []
# Otwieramy plik do odczytu w trybie tekstowym
with open("plik_z_zadaniem.txt") as plik:
# Pętla wykonuje się tak długo jak są dane do odczytania w pliku.
for linia in plik:
# Usuwamy białe znaki z początku i końca linii
temp = linia.strip()
# Pomijamy puste linie
if temp == "":
continue
# Dodajemy element na końcu listy
dane.append(temp)
# Plik automatycznie zamyka się po wyjściu z bloku with
# Nie nalerzy wykonywać plik.close()
# Przechodzimy po danych aby sprawdzić czy są poprawnie wczytane
for wiersz in dane:
print(wiersz)
Wczytywanie plików bez znanego rozmiaru, pary
Przykład dla pary string, int:
dane = []
# Otwieramy plik do odczytu w trybie tekstowym
with open("plik_z_zadaniem.txt") as plik:
# Pętla wykonuje się tak długo jak są dane do odczytania w pliku.
for linia in plik:
# Usuwamy białe znaki z początku i końca linii
temp = linia.strip()
# Pomijamy puste linie
if temp == "":
continue
a,b = temp.split(" ")
# Dodajemy dane jako tuple, pamiętając że `b` jest int-em i trzeba go przekonwertować.
dane.append((a,int(b)))
for wiersz in dane:
print(wiersz) # to jest touple
Wczytywanie plików bez znanego rozmiaru, sŁowniki
Przykład:
dane = []
with open("plik_z_zadaniem.txt") as plik:
for linia in plik:
temp = linia.strip()
if temp == "": # pomijamy puste linie
continue
parts = temp.split()
if len(parts) >= 4:
M, a, b, *nazwa_parts = parts
slownik = {
'M': int(M),
'a': int(a),
'b': int(b),
'nazwa': ' '.join(nazwa_parts)
}
dane.append(slownik)
for punkt in dane:
print(f"{punkt['M']} {punkt['a']} {punkt['b']} {punkt['nazwa']}")
Wczytywanie plików z znanym rozmiarem, tablica std::array 3 wymiarowa.
TODO
Liczenie liczb w tablicy o małym zakresie (do około 100000)
Dane do zadania
dane = 1, 2, 3, 100, 2, 3, 4, 5, 6
Używamy listy o stałym rozmiarze (maksymalna wartość + 1)
MAKS_LICZBA = 100 ilosci = 0 * (MAKS_LICZBA + 1)
Przechodzimy po wszystkich liczbach w danych
for liczba in dane: ilosciliczba += 1
Wyświetlamy wyniki
for liczba in range(len(ilosci)): if ilosciliczba > 0: # Pokazujemy tylko liczby które wystąpiły print(f"{liczba} {ilosciliczba}")
print(liczba)
Blue Void