Satz des Pytagoras
@Space: noch ein paar Anmerkungen: Sternchenimporte solltest Du vermeiden, weil damit nicht klar ist, was da alles in den Namensraum importiert wird. Variablennamen sollten aussagekräftig sein, x ist das nicht. Statt Ints will man vielleicht auch Kommazahlen eingeben. Bei x=1 passiert etwas ungewolltes.
@Space: da das Ergebnis der Wurzelfunktion sowieso ein float ist, ja.
Code: Alles auswählen
from math import sqrt
Wenn du deinen Code hier rein kopierst (gute Idee) dann klick oben auf den "Code" Button, dann sieht er besser aus.Space hat geschrieben:man kann schließlich nicht genug wissen

MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Nicht nur besser, sondern ueberhaupt erst lesbar, da ohne keine Einrueckung erhalten bleibt.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Es gibt in Python Funktionen und Klassen, die kannst Du ohne import benutzen, z.B. range oder list, die sind wie das Mäppchen und sein Inhalt, das hast Du immer auf dem Tisch liegen. Alles zusammen gibt es in Python sehr sehr viele Funktionen und Klassen (tausende), deshalb werden die meisten davon in Bibliotheken organisiert. Wenn Du Mathe hast, dann hast Du das Mathebuch auf dem Tisch und wenn Du Englisch hast, dann hast Du das Englischbuch auf dem Tisch.Space hat geschrieben:Und wie funktioniert das mit den import das hab ich noch nicht ganz so gecheckt?
Code: Alles auswählen
import math
Das Buch auf dem Tisch zu haben, reicht aber nicht aus, Du musst es auch an der richtigen Stelle aufschlagen:
Code: Alles auswählen
from math import sqrt
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Probiere mal die Such-Funktion! Da sollte es zig Threads geben, bei denen Anfänger nach simplen Aufgaben fragen. Da findest Du bestimmt einiges 

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ist es so besser
Und be math import* wird die ganze mathe bibliotek geöffnet?
Und wenn ich jetzt noch hinten eine schleife dranhängen möchte das wenn man nicht 1 oder 2 geantwortet hat das ganze nach der Antwort an
den anfang zurück springt wie muss ich das machen?
Code: Alles auswählen
from math import sqrt
x = float(input('Was ist auszurechnen? Hypotenuse(1) oder Kathete(2)'))
if x == 1:
a = float(input('Nenne die erste Kathete.'))
b = float(input('Nenne die zweite Kathete.'))
c = sqrt(a**2 + b**2)
print('Die Hypotenuse ist', c)
if x == 2:
a = float(input('Nenne die Hypotenuse.'))
b = float(input('Nenne die vorhandene Kathete.'))
c = sqrt(a**2 - b**2)
print('Die Gesuchte Kathete ist', c)
else:
print('Bitte gib für die Hypotenuse 1 und für die Kathete zwei ein!')
Und wenn ich jetzt noch hinten eine schleife dranhängen möchte das wenn man nicht 1 oder 2 geantwortet hat das ganze nach der Antwort an
den anfang zurück springt wie muss ich das machen?
Code: Alles auswählen
## Der Satz des Pytagoras
import math
print("Bitte geben Sie für den gesuchten Wert 0 ein!")
a = eval(input("a="))
b = eval(input("b="))
c = eval(input("c="))
if c==0:
c = math.sqrt((a*a)+(b*b))
print(c)
if a==0:
a = math.sqrt((c*c)-(b*b))
print(a)
if b==0:
b = math.sqrt((c*c)-(a*a))
print(b)
@010010: »eval« sollte man nicht benutzen. Wenn Du Zahleneingaben erlaubst, kannst Du den eingegebenen String per »int« bzw. hier »float« in eine Zahl umwandeln. Das Prüfen auf einen leeren String ist auch ganz einfach. Der Fall a=0 oder b=0 läßt sich leicht zusammenfassen. Per Konvention werden immer 4 Leerzeichen pro Ebene benutzt, nicht 3.
Jetzt fehlt noch etwas Fehlerbehandlung. Was passiert wenn keine Zahl eingegeben wird? Was passiert wenn c zu kurz ist? Dazu schreiben wir eine Funktion, die die Eingabe verarbeitet und prüft. Und da man am besten jeden Code in eine Funktion schreibt, auch gleich noch eine main-Funktion:
Code: Alles auswählen
print("Bitte geben Sie für den gesuchten nichts ein!")
a = input("a=")
b = input("b=")
c = input("c=")
if not c:
a = float(a)
b = float(b)
result = (a**2 + b**2) ** 0.5
elif not a or not b:
a = float(a or b)
c = float(c)
result = (c**2 - a**2) ** 0.5
print("Die fehlende Seite ist {0:.3f}".format(result))
Code: Alles auswählen
def input_float_or_none(prompt):
while True:
result = input(prompt)
if not result:
return None
try:
return float(result)
except ValueError:
print("Bitte eine Zahl oder nichts eingeben!")
def main():
print("Bitte geben Sie für den gesuchten nichts ein!")
a = input_float_or_none("a=")
b = input_float_or_none("b=")
c = input_float_or_none("c=")
if bool(a) + bool(b) + bool(c) < 2:
print("Mehr als eine Seite ist leer!")
elif not c:
result = (a**2 + b**2) ** 0.5
elif not a or not b:
try:
result = (c**2 - (a or b)**2) ** 0.5
except ValueError:
print("Seite c zu kurz!")
return
else:
print("Mindestens eine Seite sollte leer bleiben!")
print("Die fehlende Seite ist {0:.3f}".format(result))
if __name__ == '__main__':
main()
Man könnte vielleicht noch prüfen das eingegebene Zahlen positiv sind. Benutzer kommen manchmal auf komische Ideen. 
