Seite 1 von 1
Function "round"
Verfasst: Samstag 23. November 2024, 15:24
von bikehiro_57
#import math # Variante 2 Module "math" importieren
# a^2 + b^2 = c^2
a = float(input("Länge der Ankathete (cm): "))
b = float(input("Länge der Gegenkathete (cm): "))
c = (a**2 + b**2)**0.5 # Variante 1!!
#c = math.sqrt(a**2 + b**2)
print(f"Die Hypotenuse ist {c} cm lang. ")
Hallo,
wie bringe ich das Script dazu, mir das Ergebnis auf zwei Stellen zu runden und in cm auszugeben??
LG
Sorry, bin blutiger Anfänger!!!
Re: Function "round"
Verfasst: Sonntag 24. November 2024, 00:45
von sparrow
Ich bin mir sicher, auch als Anfänger bist du in der Lage genau nach dem Funktionsnamen hier im Forum zu suchen. Da wirst du einige Diskussionen finden.
Inklusive der Formatierung von Fließkommazahlen in f-Strings.
Re: Function "round"
Verfasst: Sonntag 24. November 2024, 02:50
von __blackjack__
Wobei man die genannte Funktion hier nicht braucht. Die ist eher dazu da wenn man tatsächlich mit gerundeten Zahlen weiter rechnen möchte. Für das Einsetzen in eine Zeichenkette würde man eher bei der Format-Mini-”Sprache” ansetzen, also das "{c}" um die entsprechenden Formatierungsangaben ergänzen. Die Referenzdokumentation findet man hier:
https://docs.python.org/3.10/library/st ... i-language
Edit: Wenn man weiss wie man eine Gleitkommazahl in eine ganze Zahl umwandeln kann, lässt mit einer zusätzlichen Grundrechenart, und zweien die schon im Programm vorkommen, mit ein bisschen nachdenken auch eine gerundete Zahl berechnen. Die im Gegensatz zur `round()`-Funktion dann auch eher der Rundung entspricht, welche viele Leute anscheinend erwarten, wenn sie noch nie damit konfrontiert waren, dass es mehrere Arten zu runden gibt, und es per se nicht *die* richtige Art zu runden gibt.
Re: Function "round"
Verfasst: Montag 25. November 2024, 12:47
von DeaD_EyE
Das wissenschaftliche Runden verursacht eine geringere Abweichung, wenn z.B. gerundete Werte aufsummiert werden. Beim kaufmännischen Runden entstehen größere Differenzen, wenn man die Einzelwerte summiert.
Code: Alles auswählen
def value_gen(start, stop):
for i in range(start * 10, stop * 10, 10):
yield (i + 5) / 10
def roundk(value):
"""
Kaufmännisches Runden
"""
int_value = int(value)
if abs(value - int_value) >= 0.5:
int_value += 1
return int_value
values = tuple(value_gen(0, 11))
for value in values:
print(f"Wert: {value:<7} round: {round(value):<7} roundk: {roundk(value)}")
print()
print(f"Summe: {sum(values)}")
print(f"Summe (round): {sum(round(v) for v in values)}")
print(f"Summe (roundk): {sum(roundk(v) for v in values)}")
Wert: 0.5 round: 0 roundk: 1
Wert: 1.5 round: 2 roundk: 2
Wert: 2.5 round: 2 roundk: 3
Wert: 3.5 round: 4 roundk: 4
Wert: 4.5 round: 4 roundk: 5
Wert: 5.5 round: 6 roundk: 6
Wert: 6.5 round: 6 roundk: 7
Wert: 7.5 round: 8 roundk: 8
Wert: 8.5 round: 8 roundk: 9
Wert: 9.5 round: 10 roundk: 10
Wert: 10.5 round: 10 roundk: 11
Summe: 60.5
Summe (round): 60
Summe (roundk): 66
Re: Function "round"
Verfasst: Montag 25. November 2024, 21:14
von bikehiro_57
bikehiro_57 hat geschrieben: Samstag 23. November 2024, 15:24
#import math # Variante 2 Module "math" importieren
# a^2 + b^2 = c^2
a = float(input("Länge der Ankathete (cm): "))
b = float(input("Länge der Gegenkathete (cm): "))
c = (a**2 + b**2)**0.5 # Variante 1!!
#c = math.sqrt(a**2 + b**2)
print(f"Die Hypotenuse ist {c} cm lang. ")
Hallo,
wie bringe ich das Script dazu, mir das Ergebnis auf zwei Stellen zu runden und in cm auszugeben??
LG
Sorry, bin blutiger Anfänger!!!
#print(f"Die Hypotenuse ist {c:.2f} cm lang.") Danke, so schaut das Ergebnis aus!!!!!
Danke Microsoft EDGE Copilot!!!!!
Re: Function "round"
Verfasst: Dienstag 26. November 2024, 04:24
von snafu
@DeaD_EyE: Wäre kaufmännisches Runden zur nächsten Ganzzahl nicht einfach das hier?
Re: Function "round"
Verfasst: Dienstag 26. November 2024, 10:50
von __blackjack__
@snafu: Ich würde das so machen (oder dazu schreiben, dass das nur für positive Zahlen verwendet werden sollte):
Code: Alles auswählen
int_value = int(value + 0.5 * math.copysign(1, value))
Durch das Quadrieren spielt das bei der gegebenen Aufgabe natürlich keine Rolle.
Hach ja, da werde ich wieder nostalgisch…
Code: Alles auswählen
10 PRINT"LAENGEN IN CM:"
20 INPUT"ANKATHETE";A
30 INPUT"GEGENKATHETE";B
40 C=SQR(A*A+B*B)
50 PRINT"HYPOTENUSE =";INT(C*100+.5)/100;"CM"
@bikehiro_57: Später könntest Du das Programm noch durch Fehlerbehandlung erweitern, damit die Benutzer keinen Unsinn eingeben können, wie Eingaben die keine Zahlen sind, oder negative Längenangaben.