pętla, pobranie wartości z pliku .txt

0

Witam.
Jako początkujący robię zadania między innymi z tej strony: https://www.practicepython.org/exercise/2014/12/14/23-file-overlap.html
Co by dobrze zrozumieć podstawy staram się robić ćwiczenia na więcej niż jeden sposób i mam problem.
Poniższy kod powinien wczytywać liczby z pliku .txt, i zapisać je do listy.
Dlaczego pomija co drugą liczbę?

f1_list = []
open_f1 = open('file.txt', 'r')
for n in open_f1:
open_f1.readline()
f1_list.append(int(n))

2

for n im open_f1 juz iteruje ci po każdej linii. Jak robisz readline to przeskakujesz do kolejnej ale nic z nią nie robisz. Usuń to readlines, a bedziesz miał listę ze wszystkimi liniami

1

Wklejając kod korzystaj z tagu dostępnego pod </>, a z pliku tekstowego wczytuje się tak:

tab = []
for line in open("wejscie.txt", "r"):
    tab.append(line)


print(tab)
0

Dzieki za odp

1

Ponieważ w każdej iteracji pętli przesuwasz się o 2 linie po pliku. Najpierw przechodzisz do następnej linii w pętli for n in open_f1:, a potem do kolejnej wywołując open_f1.readline().
W tej pętli dzięje się takie coś:

  1. Wczytaj następną linie pliku i przypisz do zmiennej n
  2. Wczytaj następną linie pliku
  3. Dodaj n do listy f1_list

Po prostu usuń open_f1.readline() i będzie działać tak jak powinno. Poczytaj sobie jak działa funkcja readline i co to jest iterator w Pythonie.

1

Sugerowane na tej stronie rozwiązanie jest dalekie od optymalnego. Also, primenumbers.txt zawiera ekstra spację w co dziesiątej linii. Ktoś się nie przyłożył.

0
sig napisał(a):

Wklejając kod korzystaj z tagu dostępnego pod </>, a z pliku tekstowego wczytuje się tak:

tab = []
for line in open("wejscie.txt", "r"):
    tab.append(line)


print(tab)
with open("wejscie.txt", "r") as f:
    tab = [line for line in f]

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