Seite 1 von 1

Liste--> Werte addieren

Verfasst: Donnerstag 9. Februar 2006, 19:42
von Alpha-Phonix
Hallo Leute!

mal wieder eine Frage, hab schon paar sachen aussprobiert, aber irgendwie will es net wie ich!
ich habe eine liste, die mit unterschiedlich vielen werten gefüllt werden soll! diese sollen dann unabhängig von der anzahl addiert werden!

wie könnte ich sowas am besten machen?
vielen dank

Re: Liste--> Werte addieren

Verfasst: Donnerstag 9. Februar 2006, 19:50
von gerold
Alpha-Phonix hat geschrieben:ich habe eine liste, die mit unterschiedlich vielen werten gefüllt werden soll! diese sollen dann unabhängig von der anzahl addiert werden!
Hi Alpha-Phonix!

Code: Alles auswählen

sum([1, 2, 3, 4, 5, 6.0, 7])
reduce(lambda a, b: a + b, [1, 2, 3, 4, 5.0])
mfg
Gerold
:-)

Verfasst: Freitag 10. Februar 2006, 07:37
von Alpha-Phonix
ich kriegs irgendwie nicht genau hin....
hier ist mein bisheriger Code:

Code: Alles auswählen

schnittlaenge=figur.rechneSchnittlaenge()
        self.m_SchnittListe.append(schnittlaenge)
def rechneSchnittlaenge(self):
        
        #self.schnitt=self.m_SchnittListe[0]+self.m_SchnittListe[1]
        #print self.schnitt
das in den kommentaren soll nun ersetzt werden, da ich ja normal nicht weiß, wieviel elemente die liste enthält!

Verfasst: Freitag 10. Februar 2006, 08:01
von jens
gerold hat dir doch schon die Lösung gegeben:

Code: Alles auswählen

def rechneSchnittlaenge(self):
    self.schnitt = sum(self.m_SchnittListe)
    print self.schnitt

Verfasst: Freitag 10. Februar 2006, 08:08
von Alpha-Phonix
vielen dank, es hat geklappt, ihr seit spitze!

Verfasst: Freitag 10. Februar 2006, 08:38
von Alpha-Phonix
noch ne kleinigkeit, wenn ich jetzt was speicher gibt er zum beispiel 12,456823482348234 aus, wie kann ich des formatieren auf 2 stellen?

Verfasst: Freitag 10. Februar 2006, 08:40
von jens

Verfasst: Freitag 10. Februar 2006, 08:42
von helmut

Verfasst: Freitag 10. Februar 2006, 08:43
von jens
zu spät :P

Verfasst: Freitag 10. Februar 2006, 08:43
von Alpha-Phonix
ja des weiß ich, aber wenn ich des beim speichern mach, dann sagt er mir, dass TypeError: not enough arguments for format string!
weil ich ja noch %s hab

Code: Alles auswählen

def speichern(self):
        f=file("Daten.txt","w")
        f.write("%s\n" % self.m_figurListe)
        f.write("Gesamtflaeche:")
        f.write("%s\n" % self.flaeche)
        f.write("Gesamtschnittlaenge:")
        f.write("%s\n" % self.schnitt)
        f.close()

Verfasst: Freitag 10. Februar 2006, 08:45
von jens
Alpha-Phonix hat geschrieben:weil ich ja noch %s hab
Du mußt es ja auch austauschen :roll:

Code: Alles auswählen

def speichern(self):
    f=file("Daten.txt","w")
    #f.write("%s\n" % self.m_figurListe)
    #f.write("Gesamtflaeche:")
    #f.write("%s\n" % self.flaeche)
    f.write("Gesamtschnittlaenge:")
    f.write("%.2f\n" % self.schnitt)
    f.close()
btw. Warum rückst du immer so weit ein?

Verfasst: Freitag 10. Februar 2006, 09:27
von Alpha-Phonix
des macht mein prog automatisch!
wie kann ich die gespeicherten werte wierder benutzen??

Verfasst: Freitag 10. Februar 2006, 09:31
von jens
Du kannst halt per Hand die Datei wieder einlesen und parsen.... Aber nutzt doch einfach den ConfigParser: http://www.python.org/doc/current/lib/m ... arser.html
http://www.python-forum.de/viewtopic.php?t=4676

Verfasst: Freitag 10. Februar 2006, 10:21
von gerold
Alpha-Phonix hat geschrieben:wie kann ich die gespeicherten werte wierder benutzen??
Hi Alpha-Phonix!

Du kannst deine Datei parsen, indem du alle Zeilen durchläufst und dir die Werte einzeln wieder herausparst.

Falls du aber nicht auf ein spezielles Dateiformat angewiesen bist, dann könntest du deine Daten in ein Standardformat bringen und die dafür vorgesehenen Parser verwenden.

Menschenlesbar:
ConfigParser --> INI-Format
Syck --> YAML-Format
ElementTree --> XML

Maschinenlesbar:
Pickle --> Schnelles Binärformat
Shelve --> dictionaryartiges Binärformat

Oder du schreibst alles in ein Dictionary und lässt dieses dann mit dict_to_file in eine Datei schreiben. Diese kann danach mit file_to_dict wieder ausgelesen werden und liefert dir alle Daten wieder in ein Dictionary zurück. Siehe folgenden Code von Dookie:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
"""
******************************************************************************
* Description:  Speichert ein Dictionary in eine Datei und liest diese
*               auch wieder aus. Vorsicht! Dabei wird allerdings alles in 
*               einen String umgewandelt.
* By Dookie:    http://www.python-forum.de/viewtopic.php?t=1785
******************************************************************************
"""

import sys, re

 
#----------------------------------------------------------------------
def dict_to_file(d, name, sep='='):
    items = d.items()
    items.sort()
    f = file(name, 'w')
    for key, value in items:
        f.write('%s\t%s "%s"\n' % (key, sep, str(value)))
    f.close()


#----------------------------------------------------------------------
def file_to_dict(name, sep="="):
    f = file(name,'r')
    c = f.read()
    f.close()
    regex = '((\w+)\s*%s[ \t\f\v]*(("[^"]*")|(\S*))[^\n]*\n)' % sep
    result = dict([(x[1],x[2].strip('"').strip()) for x in re.findall(regex,c)])
    return result
Möglichkeiten gibt es viele. Viel mehr als ich hier aufzulisten vermag. Man muss von Fall zu Fall entscheiden, welchen Aufwand man für die Datenspeicherung treiben möchte.

mfg
Gerold
:-)