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

: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.