Liste--> Werte addieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

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
Never touch a running system...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

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!
Never touch a running system...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

vielen dank, es hat geklappt, ihr seit spitze!
Never touch a running system...
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

noch ne kleinigkeit, wenn ich jetzt was speicher gibt er zum beispiel 12,456823482348234 aus, wie kann ich des formatieren auf 2 stellen?
Never touch a running system...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
helmut
User
Beiträge: 57
Registriert: Mittwoch 2. November 2005, 07:45
Wohnort: Dormagen

Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

zu spät :P

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

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()
Never touch a running system...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

des macht mein prog automatisch!
wie kann ich die gespeicherten werte wierder benutzen??
Never touch a running system...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten