ich sitze seid einiger Zeit an einem Benzinkosten bzw. Benzinverbrauchsrechner. Er funktioniert soweit ganz gut. Allerdings habe ich jetzt einen Bug festgestellt und ich bekomme diesen einfach nicht behoben.
In dem Programm gibt es nach dem Start ein kleines Auswahlmenü. Dort kann man auswählen zwischen Programm beenden, Werte aus Textdatei auslesen und Werte eingeben. Wenn ich Werte eingegeben habe unabhängig davon ob ich diese danach in der erwähnten Textdatei speichere oder nicht, springt das Programm danach wieder in das Menü. Das ist soweit richtig. Wenn ich aber danach wieder den Punkt "Werte eingeben" auswähle um neue Werte einzugeben, werden die vorher eingegeben Werte angezeigt. Ich habe auch keine Möglichkeit, diese zu ändern. Ich habe bereits versucht den Speicher mit dem "del" Befehl zu löschen. Dies hat aber nicht funktioniert. Am einfachsten wäre es, im Programm den Fehler zu beheben. Ich finde diesen Fehler allerdings nicht. Habt Ihr eine Idee woran es liegen könnte? Ich kopiere mal den Quellcode mit hinein.
Code: Alles auswählen
import sys
import time
def stern():
print("--------------------------------")
print("*************ENDE*************")
print("--------------------------------")
fehler1 = 1
fehler2 = 1
fehler3 = 1
#Hauptprogramm
while True:
# Hauptmenu, Auswahl
try:
menu = int(input("Bitte eingeben"
"(1: Ende, 2: Werte abfragen, 3: Werte eingeben): "))
except:
print("Bitte geben Sie nur Zahlen zwischen 1 - 3 ein!")
continue
#Abfragen, anlegen oder Ende
if menu == 1: # Auswahlmenu beenden
stern()
break
elif menu == 2: # Abfrage der eingegeben Werte
try:
d = open("Verbrauchstabelle.txt")
except:
print("Dateizugriff nicht möglich!")
sys.exit(0)
allezeilen = d.readlines()
d.close
summe = 0
for zeile in allezeilen:
print(zeile, end="")
elif menu == 3: # Werte eingeben
try:
d = open ("Verbrauchstabelle.txt","a")
except:
print("Dateizugriff nicht erfolgreich!")
while fehler1 == 1:
print("Wieviel KM sind Sie gefahren?")
x = input()
try:
KM = float(x)
fehler1 = 0
except:
print("Bitte geben Sie nur Zahlen ein!")
while fehler2 == 1:
print("Wiviel Liter haben Sie getankt?")
y = input()
try:
Liter = float(y)
fehler2 = 0
except:
print("Bitte geben Sie nur Zahlen ein!")
while fehler3 == 1:
print("Was kostet der Liter Kraftstoff?")
z = input()
try:
Preis = float(z)
fehler3 = 0
except:
print("Bitte geben Sie nur Zahlen ein!")
Verbrauch = Liter / KM * 100 # Formel zur Berechnung des Benzinverbrauchs
Kosten = Preis * Verbrauch # Formel zur Berechnung der Kosten pro 100 KM
print("Es ergab sich ein Verbrauch von", round(Verbrauch, 2), "Liter.")
print("Die Kosten für 100 KM betragen",round(Kosten, 2) , "Euro.")
if Verbrauch > 8:
print("Das Auto hat einen hohen Kraftstoffverbrauch")
elif Verbrauch < 6:
print("Das Auto hat einen niedrigen Kraftstoffverbrauch.")
elif Verbrauch > 6 or Verbrauch < 8:
print("Das Auto hat einen normalen Kraftstoffverbauch")
print("Wenn Sie die Werte speichern möchten, geben Sie 'y' ein")
x = input()
if x == "y": # Eingegebene Werte in Text Datei speichern
li = [time.strftime("%d.%m.%Y %H:%M:%S"), KM, round(Verbrauch, 2), round(Verbrauch, 2)]
d.write(str(li[0]).replace (".",".") + " "
+ str(li[1]).replace (".",",") + " gefahrene KM; "
+ str(li[2]).replace(".",",") + " Liter/100 KM; "
+ str(li[3]).replace(".",",") + " Euro/100KM \n")
else:
stern()
d.close