bin seit einigen Tagen hier angemeldet und absoluter Programmieranfänger.
Habe mir vorgenommen aus Spaß an der Freud ein wenig Python zu lernen.
Ich denke, da bin ich hier genau richtig
Um mir das gelernte ein wenig besser zu verdeutlichen habe ich mich an einem Rechen-"Parser" gewagt.
Ich bin irgendwie ziemlich erstaunt das ich das, wenn auch rudimentär, hinbekommen habe.
Anbei mein Code-Schnipsel des "Parser"
Vielleicht habt Ihr noch den ein oder anderen Verbesserungsvorschlag für mich!
Kann ich etwas vereinfachen oder sollte ich teile komplett anders gestalten?
Freue mich auf Eure positive Kritik und Anregung.
Grüße
Blaster
Code: Alles auswählen
#! /usr/bin/python
# -*- coding: utf-8 -*-
import re
print """
----------------------------------------------------------------------------
Es dürfen keine Leerzeichen zwischen Zahl und Operand stehen!
Am Ende der Formel muss ein = stehen.
Beispiel: 40*20/2+3=
----------------------------------------------------------------------------
"""
formel = raw_input ("Bitte gebe die Formel ein: ")
#Ist ein = am Ende der Formel?
#Wie lang ist die Formel?
if formel[len(formel)-1] == "=":
laenge = len(formel)
#Formel in eine Liste uebertragen
#formelListe = formel.split(" ")
formelListe = (re.split(r'(\D+)',formel))
#Feststellen wieviele Zahlen berechnet werden muessen
#Wieviele Operatoren sind vorhanden?
anzahlOps = 0
anzahlWerte = 0
for x in range(len(formelListe)):
if formelListe[x] == "*" or formelListe[x] == "/" or formelListe[x] == "+" or formelListe[x] == "-" or formelListe[x] == "=":
anzahlOps = anzahlOps + 1
else:
anzahlWerte = anzahlWerte +1
#Ist die Formel in Ordnung?
if anzahlOps >= anzahlWerte:
print """
------------------------------------------
In Deiner Formel befindet sich ein Fehler"
------------------------------------------
"""
#Rechnen
zs = float(formelListe[0])
for x in range(len(formelListe)):
if formelListe[x] == "*":
zs = zs * float(formelListe[x+1])
if formelListe[x] == "/":
zs = zs / float(formelListe[x+1])
if formelListe[x] == "-":
zs = zs - float(formelListe[x+1])
if formelListe[x] == "+":
zs = zs + float(formelListe[x+1])
print "Ergebnis:", zs
else:
print """
-----------------------------------------
!!! ACHTUNG - Es ist kein = vorhanden!!!!
Bitte starte das Programm neu.
-----------------------------------------
"""