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

Odpowiedz Nowy wątek
2019-06-12 16:47
0

Witam.
Jako początkujący robię zadania między innymi z tej strony: https://www.practicepython.or[...]14/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))

Pozostało 580 znaków

2019-06-12 17:20
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

Pozostało 580 znaków

2019-06-12 17:21
sig

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)

Pozostało 580 znaków

2019-06-12 17:25
0

Dzieki za odp

Pozostało 580 znaków

2019-06-12 17:34
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.

Pozostało 580 znaków

2019-06-12 19:06
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ł.

Pozostało 580 znaków

2019-06-14 10:30
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]
edytowany 1x, ostatnio: PinkLion, 2019-06-14 10:31

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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