ich habe ein Problem, ich habe einen Taschenrechner programmiert. Dieser ist auf einer Linie, das heißt man muss nur eine Zeile eingeben. Doch bei "Mal" hat etwas nicht hin. Es kommt immer der Fehler : Traceback (most recent call last):
File "C:/Users/Felix/AppData/Local/Programs/Python/Python35/nn.py", line 134, in <module>
Rechnung = Rechnung_anfang + erg + Rechnung_ende
TypeError: Can't convert 'int' object to str implicitly
Mein Programmcode lautet:
Code: Alles auswählen
def mal(FaktorEins, FaktorZwei):
erg = FaktorEins * FaktorZwei
return erg
def plus(Summand1, Summand2):
erg = Summand1+Summand2
return erg
def minus(Minuend, Subtrahend):
erg = Minuend-Subtrahend
return erg
def geteilt(Dividend, Divisor):
if Dividend%Divisor==0:
erg = int(Dividend/Divisor)
else: erg = Dividend/Divisor
return erg
def hoch(Basis, Exponent):
erg = Basis**Exponent
return str(erg)
def wurzelrechnen(Wurzel, Zahl):
erg = int(Zahl**(1/Wurzel))
return str(erg)
Rechnung = str(input("Geben Sie bitte die Rechnung ein, die Sie ausrechnen möchten: "))
Laenge = len(Rechnung)
stelle = 0
RechnungAusgefuehrt = False
Fertig = False
RechnungFertig = False
while RechnungFertig==False:
Fertig = False
while stelle<len(Rechnung) and Fertig==False:
if ord(Rechnung[stelle])>47 and ord(Rechnung[stelle])<58:
stelle+=1
else:
stelle+=1
Fertig=True
if Fertig==False:
RechnungFertig = True
RechnungAusgefuehrt = False
stelle = 0
while stelle<len(Rechnung) and RechnungAusgefuehrt==False and RechnungFertig==False:
if Rechnung[stelle] == ".":
davor = 1
Wurzel = ""
while ord(Rechnung[stelle-davor])>47 and ord(Rechnung[stelle-davor])<58 and stelle-davor>=0:
Wurzel = Rechnung[(stelle-davor)]+Wurzel
davor+=1
davor-=1
danach = 8
Zahl = Rechnung[stelle+danach]
danach = 9
while ord(Rechnung[stelle+danach])>47 and ord(Rechnung[stelle+danach])<58:
Zahl = Zahl + Rechnung[stelle+danach]
danach+=1
Wurzel = int(Wurzel)
Zahl = int(Zahl)
Ergebnis = wurzelrechnen(Wurzel, Zahl)
Rechnung_anfang = Rechnung[:stelle-davor]
Rechnung_ende = Rechnung[stelle+danach+1:]
Rechnung = Rechnung_anfang + Ergebnis + Rechnung_ende
RechnungAusgefuehrt = True
else: stelle += 1
stelle = 0
while stelle<len(Rechnung) and RechnungAusgefuehrt==False and RechnungFertig==False:
if Rechnung[stelle]=="^":
davor = 1
Basis = ""
while ord(Rechnung[stelle-davor])>47 and ord(Rechnung[stelle-davor])<58 and stelle-davor>=0:
Basis = Rechnung[(stelle-davor)]+Basis
davor+=1
davor-=1
danach = 1
Exponent = ""
while ord(Rechnung[stelle+danach])>47 and ord(Rechnung[stelle+danach])<58 and stelle+danach+1<len(Rechnung):
Exponent = Exponent + Rechnung[stelle+danach]
danach+=1
if ord(Rechnung[stelle+danach])>47 and ord(Rechnung[stelle+danach])<58:
Exponent = Exponent + Rechnung[stelle+danach]
danach+=1
Basis = int(Basis)
Exponent = int(Exponent)
Ergebnis = hoch(Basis, Exponent)
Rechnung_anfang = Rechnung[:stelle-davor]
if danach==1:
Rechnung_ende = Rechnung[stelle+danach+1:len(Rechnung)]
else: Rechnung_ende = Rechnung[stelle+danach:len(Rechnung) ]
Rechnung = Rechnung_anfang + Ergebnis + Rechnung_ende
RechnungAusgefuehrt = True
else: stelle+=1
stelle = 0
while stelle<len(Rechnung) and RechnungAusgefuehrt==False and RechnungFertig==False:
if Rechnung[stelle]=="*":
davor=1
FaktorEins = ""
while ord(Rechnung[stelle-davor])>47 and ord(Rechnung[stelle-davor])<58 and stelle-davor>=0:
FaktorEins = Rechnung[stelle-davor]+FaktorEins
davor+=1
davor-=1
danach = 1
FaktorZwei = ""
while ord(Rechnung[stelle+danach])>47 and ord(Rechnung[stelle+danach])<58 and stelle+danach+1<len(Rechnung):
FaktorZwei = FaktorZwei + Rechnung[stelle+danach]
danach+=1
if ord(Rechnung[stelle+danach])>47 and ord(Rechnung[stelle+danach])<58:
FaktorZwei = FaktorZwei + Rechnung[stelle+danach]
danach+=1
FaktorEins = int(FaktorEins)
FaktorZwei = int(FaktorZwei)
erg = mal(FaktorEins, FaktorZwei)
Rechnung_anfang = Rechnung[:stelle-davor]
if danach==1:
Rechnung_ende = Rechnung[stelle+danach+1:len(Rechnung)]
else:
Rechnung_ende = Rechnung[stelle+danach:len(Rechnung)]
Rechnung = Rechnung_anfang + erg + Rechnung_ende
RechnungAusgefuehrt = True
else: stelle+=1 #NICHT LOESCHEN!! Muss ans Ende der mal/geteilt Berechnung
Es wäre echt toll wenn mir jemand helfen könnte, da ich gerade echt verzweifle und dies bald als Schulaufgabe abgeben muss.
Vielen dank für die Mühe die Sie/Ihr euch macht, auch wenn es nicht klappen sollte.
MfG Nudrec