Nowe posty

xx zapis klatki filmu mp4 w postaci obrazu jpg (2)
2019-09-16, 22:33:32
xx Dystrybucja do szkolnej pracowni. (6)
2019-09-16, 18:39:04
xx Jaką dystrybucje polecacie pod mój sprzęt? (1)
2019-09-16, 14:53:22
xx Thunderbird - jedna poczta na dwóch dystrybucjach (3)
2019-09-16, 12:34:56
xx Nowe forum linuxowskie (5)
2019-09-16, 11:55:40
xx zrobmikompa.pl - co myślicie o tej stronce (8)
2019-09-16, 11:44:47
xx Jaka dystrybucja pod mon sprzęt? (1)
2019-09-16, 10:52:58
xx BIOS nie widzi dysku z Linuxem (2)
2019-09-14, 10:41:31
xx Problem z antiX wersja live (0)
2019-09-12, 20:56:49
xx Serwer do Nauki (5)
2019-09-05, 07:35:50

Autor Wątek: [Python] Błąd out of range  (Przeczytany 5321 razy)

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
[Python] Błąd out of range
« dnia: 2013-11-26, 19:43:44 »
Witam.
Mam taki oto kod:
#!/usr/bin/env python

dane = []
myfile = open('wyniki_historia.txt')
i=0


while myfile.readline():
 linia = myfile.readline().split(' ')
 dane.append(linia)
 print dane[i][2]
 i=i+1
wszystko niby dziala tak jak nalezy, jednak na koniec python wywala mi blad: index out of range.
Nie bardzo wiem czemu? Wydaje mi się ze w ostatniej petli i powinno miec rowniez ostatni index listy...
Prosze  o pomoc...

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2510
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • keybase.io/pkraszewski
[Python] Błąd out of range
« Odpowiedź #1 dnia: 2013-11-26, 22:54:36 »
Ostatnia linijka pliku jest pusta,  split nie ma co dzielić i nie ma [2]?
Dodatkowo wyżerasz po dwie linie w iteracji.  Raz w while i wyrzucasz wynik,  drugi raz linię nizej i nie sprawdzasz EOF.
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
[Python] Błąd out of range
« Odpowiedź #2 dnia: 2013-11-27, 08:36:24 »
pkraszewski dziękuje za uwagi. Wrzucilem haslo i znalazłem coś takiego:
f=open("file")
while 1:
  line=f.readline()
  if not line: break
  print line  
f.close()
Powinienem się na tym oprzeć?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2510
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • keybase.io/pkraszewski
[Python] Błąd out of range
« Odpowiedź #3 dnia: 2013-11-27, 11:56:44 »
Może napisz, co chcesz uzyskać.

Bo tak na około - domyślając się na podstawie nieprawidłowego skryptu, co autor miał na myśli - może być trudno. A problem może mieć kanoniczne rozwiązanie w Pythonie.
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
[Python] Błąd out of range
« Odpowiedź #4 dnia: 2013-11-27, 21:35:07 »
Bawiąc się pythonem chce zrobić generator liczb do typowania. Ten fragment kodu bedzie miał za zadanie pobieranie z pliku ciagów jakie juz padły i zapisywac je do tabeli z którą porównam generowane liczby. Chce odrzucić kombinacje jakie juz mialy miejsce... troche jest to smieszne, bo w bazie mam zaledwie jakies 5000 wynikow... ale to wszystko w ramach nauki pythona...

Offline Kamil Leduchowski

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 152
    • Zobacz profil
[Python] Błąd out of range
« Odpowiedź #5 dnia: 2013-11-29, 15:54:19 »
Cytat: ar2di2utu
Chce odrzucić kombinacje jakie juz mialy miejsce...
Tak bo podstawowym prawem probabilistyki jest, cytując klasyczkę (???) "nic dwa razy się nie zdarza"...