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)