Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [python] skrypt zliczający wartości z pliku
Forum PHP.pl > Forum > Przedszkole
tofik1778983
Witam.

Mam pliczek gdzie są wartości w postaci:
  1. 2,44
  2. 6,78
  3. 3,90
  4. ...

czyli jakiś float w każdej linii.
Potrzebuję jak najprostszy kod który otworzy ten plik i zliczy wszystkie wartości i poda wynik.

Zrobiłem sobie tak:
  1. plik=open('plik.txt', 'r')
  2. for x in plik:
  3. wynik = x +wynik;
  4.  

wywala mi: can't concatenate 'str' and 'int' object

no to wiem o co chodzi ale nie wiem jak zamienic stringa na inta poprawnie.. próbowałem parę sposobów ale ciągle jakiś bład.

Nie znam w ogóle pytona dlatego piszę, dla was pewnie banał a ja już mam dość szukania co raz to nowych błędów które mi wypluwa.
Kod potrzebuje do większego skryptu dla telefonu pod androidem.
emkej
  1. <?php
  2.  
  3. $file = file('./file');
  4.  
  5. $array = array();
  6.  
  7. foreach($file as $v) {
  8. $array[] = (float) $v;
  9. }
  10.  
  11. echo array_sum($array);
  12. ?>
tofik1778983
W tytule pisze jak wół ze w pytonie ten skrypt ;]
W php czaje. Dzięki.
d3ut3r
dla pliku

Kod
10.2
10.4
10.1


kod:

  1. from decimal import *
  2. plik=open('file.txt', 'r')
  3. wynik=0
  4. for x in plik:
  5. wynik = Decimal(x) + wynik;
  6.  
  7. print wynik


powinien działać
emkej
Cytat(tofik1778983 @ 25.06.2012, 11:23:03 ) *
W tytule pisze jak wół ze w pytonie ten skrypt ;]
W php czaje. Dzięki.


ops, sorry nie zwrocilem uwagi.

A Twoj blad mowi, ze nie mozna dopsowac stringa do inta, czyli musisz zrobic rzutowanie.
piotrooo89
na pythonie się nie znam ale...

Kod
#!/usr/bin/env python

sum = float(0)

fhandle = open('dane.txt', 'r')

for line in fhandle:
    sum = sum + float(line.replace(',', '.'))

print sum
droslaw
Kod w wyrażeniem listowym:
Kod
#!/usr/bin/env python
value = sum([float(line.replace(',','.')) for line in file('plik.txt').readlines()
    if line.replace(',','',1).strip().isdigit()])
print value

Sprawdza też czy linia jest poprawnym floatem, żeby skrypt się nie wysypał jeśli w pliku będzie np. pusta linia.
tofik1778983
Dzięki za pomoc. W sumie potem doszedłem co i jak. przekształciłem sobie stringi na floaty potem dalej w skrypcie odwrotnie i zaczęło działać.
Jeszcze gdzieś po drodze wdarła mi się niechciana spacja co także powodowało błąd. Ale dało radę.
Pozdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.