EIne ganz kleine Frage
Welche Funktion berechnet den 10er Logarithmus einer Zahl?
Hab irgendwo mal log10(x) gelesen, klappt aber nicht
mfg tyho
PS: Kann mir jemand nen Tipp geben, wie man sowas selber finden kann?^^ googlen hilft nicht
Logarithmus
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
Was geht denn da nicht??
Und zu dem Thema Wie suche ich richtig:
Ich habe einfach mal
python log10(x)
in die Google-Suche eingegeben, und der erste Treffer zeigt hierhin.
mfg, querdenker
Code: Alles auswählen
>>> import math
>>> math.log10(100)
2.0
>>>
Und zu dem Thema Wie suche ich richtig:
Ich habe einfach mal
python log10(x)
in die Google-Suche eingegeben, und der erste Treffer zeigt hierhin.
mfg, querdenker
-
- User
- Beiträge: 3
- Registriert: Donnerstag 14. Mai 2020, 21:36
Sooo… 14 Jahre zu spät... aber ich hoffe irgendwer liest das hier und es hilft ihm. Ich glaube es gibt so wirklich keine Logarithmus Funktion in Python... daher hab ich hier meine eigene Variante eines Logarithmus-Rechners
Er Funktioniert nach dem Annährungsprinzip. Funktioniert aber meiner Meinung nach gut. g = b**100 und k = b**(-100) begrenzen den Taschenrechner auf den Maximalwert 100 des gesuchten Exponenten und den Minimalwert auf -100.
b = float(input("Was ist deine Basis?"))
if b == 0:
print("Der gesuchte Exponent ist 0")
quit()
e = float(input("Was ist dein Ergebnis?"))
if e == 0:
print("Der gesuchte Exponent ist 1")
quit()
else:
g = b**100
k = b**(-100)
lg = 100
lk =-100
m = (lk+lg)/2
if e > g:
quit("Der gesuchte Exponent ist zu groß!")
if e < k:
quit("Der gesuchte Exponent ist zu klein!")
i=0
for i in range (100):
if b**m > e:
lg = m
m = (lk+m)/2
i+1
elif b**m < e:
lk = m
m = (lg+m)/2
i+1
elif e == 0:
l=0
break
lm = (lg+lk)/2
print("Der gesuchte Exponent ist",lm)
Er Funktioniert nach dem Annährungsprinzip. Funktioniert aber meiner Meinung nach gut. g = b**100 und k = b**(-100) begrenzen den Taschenrechner auf den Maximalwert 100 des gesuchten Exponenten und den Minimalwert auf -100.
b = float(input("Was ist deine Basis?"))
if b == 0:
print("Der gesuchte Exponent ist 0")
quit()
e = float(input("Was ist dein Ergebnis?"))
if e == 0:
print("Der gesuchte Exponent ist 1")
quit()
else:
g = b**100
k = b**(-100)
lg = 100
lk =-100
m = (lk+lg)/2
if e > g:
quit("Der gesuchte Exponent ist zu groß!")
if e < k:
quit("Der gesuchte Exponent ist zu klein!")
i=0
for i in range (100):
if b**m > e:
lg = m
m = (lk+m)/2
i+1
elif b**m < e:
lk = m
m = (lg+m)/2
i+1
elif e == 0:
l=0
break
lm = (lg+lk)/2
print("Der gesuchte Exponent ist",lm)
@tiziantheonlyone: Was gefällt Dir an math.log nicht?
Eingerückt wird in Python immer mit 4 Leerzeichen, nicht 2.
`m = (lk+lg)/2` wird an vier Stellen im Code berechnet, obwohl es nur an einer nötig wäre.
Da `i` in der for-Schleife gesetzt wird, ist das `i=0` unnötig. `i+1` tut sowieso nichts.
Vom Code bleibt also nicht mehr viel übrig:
Eingerückt wird in Python immer mit 4 Leerzeichen, nicht 2.
`m = (lk+lg)/2` wird an vier Stellen im Code berechnet, obwohl es nur an einer nötig wäre.
Da `i` in der for-Schleife gesetzt wird, ist das `i=0` unnötig. `i+1` tut sowieso nichts.
Vom Code bleibt also nicht mehr viel übrig:
Code: Alles auswählen
lg = 100
lk =-100
for i in range(100):
m = (lk+lg)/2
if b**m > e:
lg = m
elif b**m < e:
lk = m
print("Der gesuchte Exponent ist", m)
-
- User
- Beiträge: 3
- Registriert: Donnerstag 14. Mai 2020, 21:36
Naja ich bin auch nur ein Neuling der anderen helfen will. Das war halt meine Lösung
Deine Lösung ist natürlich kompakter, aber beides Funktioniert. Wenn man sich zwei drei byte spaaren möchte ist Dein Programm natürlich besser.
Für meinen ersten Versuch bin ich trotzdem zufrieden.
Deine Lösung ist natürlich kompakter, aber beides Funktioniert. Wenn man sich zwei drei byte spaaren möchte ist Dein Programm natürlich besser.
Für meinen ersten Versuch bin ich trotzdem zufrieden.
-
- User
- Beiträge: 3
- Registriert: Donnerstag 14. Mai 2020, 21:36
"Da `i` in der for-Schleife gesetzt wird, ist das `i=0` unnötig. `i+1` tut sowieso nichts."
Ich dachte mann muss i immer +1 nehmen. Aber das war ein anderes Ding.. Ich erinnere mich jetzt wieder.
Peinlich...
Ich dachte mann muss i immer +1 nehmen. Aber das war ein anderes Ding.. Ich erinnere mich jetzt wieder.
Peinlich...
- DeaD_EyE
- User
- Beiträge: 1017
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Python gibt es seit 1990 und du behauptest einfach, die math.log10 wäre falsch implementiert?
https://github.com/python/cpython/blob/ ... ule.c#L811
Dann fang mal an mit C aufzuräumen, da math die Funktionen aus der C standard library verwendet.
https://github.com/python/cpython/blob/ ... ule.c#L811
Dann fang mal an mit C aufzuräumen, da math die Funktionen aus der C standard library verwendet.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server