Decibel Calculator. Kann jemand den Code überprüfen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
donutdrake
User
Beiträge: 14
Registriert: Dienstag 20. November 2018, 07:54

Hallo an das Forum,

ich weiß wie man ein Taschenrechner erstellt und wie man Dezibel addiert.
Für die Addition muss man import math und math.log verwenden.
Jedoch wenn ich es ausführe kommt die folgende Fehlermeldung: return 10*math.log*((10^x)+(10^y))

TypeError: unsupported operand type(s) for *: 'int' and 'builtin_function_or_method'

Hier ist mein Code:

Code: Alles auswählen

import math

def addition(x, y):
    return 10*math.log*((10^x)+(10^y))

print("Willst du zwei Dezibelwerte addieren?")
print("Y oder N?")

choice=input()

num1=int(input("Gib den ersten Dezibelwert an:"))
num2=int(input("Gib den zweiten Dezibelwert an"))

if choice == 'Y':
    print(num1, "+", num2, "=",addition(num1,num2))

elif choice == 'N':
    print("Verstanden")

else:
    print("Ungültige Eingabe")    
Hiermit bedanke ich mich vorraus :)
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

math.log ist eine Funktion. math.log(10) ist der Aufruf der Funktion mit einem Argument. Und der ^-Operator macht auch nicht, was du denkst. Das ist bitweises xor. Du suchst **, den Operator zur Exponierung.
donutdrake
User
Beiträge: 14
Registriert: Dienstag 20. November 2018, 07:54

__deets__ hat geschrieben: Freitag 7. Dezember 2018, 11:09 math.log ist eine Funktion. math.log(10) ist der Aufruf der Funktion mit einem Argument. Und der ^-Operator macht auch nicht, was du denkst. Das ist bitweises xor. Du suchst **, den Operator zur Exponierung.
Ah verstehe, danke dir, jetzt funktioniert die auch.
Aber wenn ich zwei Werte eingebe kommt als Ergebnis das hier raus.
Als Beispiel:
100 & 120
100 + 120 = 2.302585092994046e+120
donutdrake
User
Beiträge: 14
Registriert: Dienstag 20. November 2018, 07:54

Beziehungsweise wie kann man der Exponent in Dezimalzahlen darstellen am Ende?
ArtooDetoo
User
Beiträge: 60
Registriert: Dienstag 4. Dezember 2018, 16:57

Ich glaube, die Formel müsstest du noch einmal überprüfen, bei 100 und 120 sollte in etwa wieder 120 dB herauskommen und nicht 2.3e120 ...
Zum Beispiel hast du die Division durch 10 in den Exponenten vergessen.
Antworten