Seite 2 von 3

Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Samstag 13. August 2011, 19:58
von BlackJack
@Micky2010: In der Zeichenkette sind drei Platzhalter, Du übergibst aber nur *ein* Objekt, nämlich eine Liste. Wenn dort mehrere Objekte übergeben werden sollen, dann müssen die in einem Tupel stecken. Dann ist das nächste Problem aber, dass der dritte Platzhalter für eine Gleitpunktzahl ist, Du aber ein Tupel übergibst. Und die 3 bei den Platzhaltern ist ziemlich sicher an der falschen Stelle.

Die Werte sollte man allerdings nicht in die Zeichenkette hineinformatieren, sondern die für den verwendeten Datenbankadapter vorgesehenen Platzhalter und das zweite Argument der `execute()`-Methode benutzen.

Last but not least solltest Du das ``global`` loswerden. Werte ausser Konstanten sollten Funktionen als Argumente übergeben werden und nicht magisch irgendwo aus der Umgebung kommen.

Die Dateiendung 'dll' für eine Datenbankdatei ist etwas ungünstig. Das ist unter Windows eine übliche Endung für dynamisch ladbare Bibliotheken mit Maschinencode, beziehungsweise seit einiger Zeit auch .NET-Bytecode.

Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Samstag 13. August 2011, 22:37
von Micky2010
Das hab ich geändert, aber wenn ich warte kommt dann diese Fehlermeldung:

Code: Alles auswählen

Bitte anzahl der 1-er eingeben.(Wenn null dann 0 eingeben):
0
Bitte anzahl der 2-er eingeben.(Wenn null dann 0 eingeben):
0
Bitte anzahl der 3-er eingeben.(Wenn null dann 0 eingeben):
0
Bitte anzahl der 4-er eingeben.(Wenn null dann 0 eingeben):
5
Bitte anzahl der 5-er eingeben.(Wenn null dann 0 eingeben):
0
Bitte anzahl der 6-er eingeben.(Wenn null dann 0 eingeben):
6
Bitte Klasse eingeben:
5
Der Durchschnitt ist : 5.091
(5, 5.0909090909090908, 2011, 8, 13)
Traceback (most recent call last):
  File "C:\Dokumente und Einstellungen\*\Desktop\Ergebnis.py", line 49, in <module>
    Notenberechnung()
  File "C:\Dokumente und Einstellungen\*\Desktop\Ergebnis.py", line 46, in Notenberechnung
    connection.commit()
OperationalError: database is locked
Der Python code:

Code: Alles auswählen

import sqlite3 
import time
def Notenberechnung():
    liste = []
    for note in range(1,7):
               noten = input("Bitte anzahl der %i-er eingeben.(Wenn null dann 0 eingeben):\n" % note)
               liste.append(noten)
    klasse = input("Bitte Klasse eingeben:\n")
    nstudents = sum(liste)
    n_notsum = 0
    for y in range(0,6):
        var = liste[y]
        y_2 = var * (y + 1)
        n_notsum = n_notsum + y_2
        n_durchs = n_notsum / float(nstudents)

    print"Der Durchschnitt ist : %.3f" % n_durchs
    x = time.localtime()
    Date1 = x[0:3]
    Date2 = Date1[0]
    Date3 = Date1[1]
    Date4 = Date1[2]
    Argumente = (klasse,n_durchs,Date2,Date3,Date4)
    print Argumente
    connection = sqlite3.connect("noten_db2.db")
    cursor = connection.cursor()
    cursor.execute("Select name FROM sqlite_master") 
    row = cursor.fetchone()
    if row == None:
        cursor.execute("""CREATE TABLE noten (
        Klasse TEXT, Durchschnitt REAL, Date INTEGER, Date2 INTEGER, Date3 INTEGER)""")  
    if row != None:
        pass
    cursor.execute("""INSERT INTO noten VALUES (
    %s, %f, %d, %d, %d )"""% Argumente)
    connection.commit()

    
Notenberechnung()
Wenn die db noch nicht da war, gents einwandfrei, aber wenns die db schon ibt, dann ist meckern angesagt für Python
LG Micky2010

Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Sonntag 14. August 2011, 05:09
von EyDu
Ich gebe mal einen Tipp ab: du arbeitest mit Idle?

Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Sonntag 14. August 2011, 12:50
von cofi
Ich tippe eher auf ein fehlendes `connection.close()` und das deshalb das lock nich aufgeraeumt wird.

Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Sonntag 14. August 2011, 13:56
von Micky2010
Gut hab ich gemacht, das Programm schreibt aber immer noch nicht die neuen Daten in die DB!!

LG Micky2010

Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Sonntag 14. August 2011, 18:25
von EyDu
cofi hat geschrieben:Ich tippe eher auf ein fehlendes `connection.close()` und das deshalb das lock nich aufgeraeumt wird.
Deshalb mein Tipp mit Idle.

Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Sonntag 14. August 2011, 20:24
von Micky2010
Ich arbeite mit IDLE!!!!
LG Micky2010

Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Montag 15. August 2011, 05:41
von EyDu
Hallo.

Wie sieht denn der aktuelle Stand deines Codes aus?

Sebastian

Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Montag 15. August 2011, 18:08
von Micky2010

Code: Alles auswählen

import sqlite3 
import time
def Notenberechnung():
    liste = []
    for note in range(1,7):
               noten = input("Bitte anzahl der %i-er eingeben.(Wenn null dann 0 eingeben):\n" % note)
               liste.append(noten)
    klasse = input("Bitte Klasse eingeben:\n")
    nstudents = sum(liste)
    n_notsum = 0
    for y in range(0,6):
        var = liste[y]
        y_2 = var * (y + 1)
        n_notsum = n_notsum + y_2
        n_durchs = n_notsum / float(nstudents)

    print"Der Durchschnitt ist : %.3f" % n_durchs
    x = time.localtime()
    Date1 = x[0:3]
    Date2 = Date1[0]
    Date3 = Date1[1]
    Date4 = Date1[2]
    Argumente = (klasse,n_durchs,Date2,Date3,Date4)
    print Argumente
    connection = sqlite3.connect("noten_db2.dll")
    cursor = connection.cursor()
    cursor.execute("Select name FROM sqlite_master") 
    row = cursor.fetchone()
    if row == None:
        cursor.execute("""CREATE TABLE noten (
        Klasse TEXT, Durchschnitt REAL, Date INTEGER, Date2 INTEGER, Date3 INTEGER)""")  
    if row != None:
        pass
    cursor.execute("""INSERT INTO noten VALUES (
    %s, %f, %d, %d, %d )"""% Argumente)

    connection.close()
    
Notenberechnung()


Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Sonntag 21. August 2011, 10:31
von Micky2010
*kleinlaut* bekomm ich bitte noch eine antwort :shock: :shock: :shock: :shock: :K :K
LG
Micky2010

Re: Problem bei der Berechnung von Kommazahlen

Verfasst: Sonntag 21. August 2011, 11:20
von BlackJack
@Micky2010: Da fehlt ein `commit()` würde ich mal sagen.