Satz des Pytagoras

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Space
User
Beiträge: 22
Registriert: Montag 7. September 2015, 16:12

Ah ja klar
krass danke das läuft ja jetzt super nach einigen korrekturen kriege ich das ganze schon bis zur haupt rechnung.
Aber da ist das nächste problem da ich bei der rechnung dem wurzel aus dem ganzen ziehen will und ich nicht weis ob es bei python ein wurzel zieh zeichen oder so etwas gibt hab ich das ganze so gemacht:

c = a**+b**/a**+b**

Aber weil das Bruchzeichen hinter dem quadrat zeichen steht kommt nur invalid syntax und es geht nicht weiter. Ich hab es auch schon mit nem Backslash oder Klammer versucht aber das bringt irgendwie nichts

Hier noch mal das Korrigierte Programm:

from math import*

x = int(input('Was ist auszurechnen? Hypotenuse(1) oder Kathete(2)'))
if x == 1:
a = int(input('Nenne die erste Kathete.'))
b = int(input('Nenne die zweite Kathete.'))
c = a**+b**/a**+b**

print('Die Hypotenuse ist', c)
BlackJack

@space: Wo man die Funktion zum Wurzelziehen herbekommt hat MagBen schon gezeigt und ``**`` ist nicht das ”Quadratzeichen” sondern der Potenzoperator, das heisst Du musst da auch die Potenz angeben, also in diesem Fall 2.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Wenn du nochmal zurueck zum ersten Thread gehst, kannst du bei MagBens Post auch lesen wie die Zeile richtig aussieht.
Space
User
Beiträge: 22
Registriert: Montag 7. September 2015, 16:12

Achso jetzt weis ich wie er das gemeint hat.
Ich bastle noch en bissel weiter ich stelle dan das (hoffentlich) fertige programm rein. :)
Ich will eigentlich nur ein bisschen rum programmieren und was dabei lernen. man kann schließlich nicht genug wissen :D
Space
User
Beiträge: 22
Registriert: Montag 7. September 2015, 16:12

So das dürfte es sein ihr könnte es ja noch mal auf Hals, Nieren, Ohren probleme testen. :D

from math import*

x = int(input('Was ist auszurechnen? Hypotenuse(1) oder Kathete(2)'))
if x == 1:
a = int(input('Nenne die erste Kathete.'))
b = int(input('Nenne die zweite Kathete.'))
c = sqrt(a**2 + b**2)

print('Die Hypotenuse ist', c)
if x == 2:
a = int(input('Nenne die Hypotenuse.'))
b = int(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!')
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@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
User
Beiträge: 22
Registriert: Montag 7. September 2015, 16:12

Also sollte ich lieber mit floats arbeiten?
Und wie funktioniert das mit den import das hab ich noch nicht ganz so gecheckt?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Space: da das Ergebnis der Wurzelfunktion sowieso ein float ist, ja.

Code: Alles auswählen

from math import sqrt
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Space hat geschrieben:man kann schließlich nicht genug wissen :D
Wenn du deinen Code hier rein kopierst (gute Idee) dann klick oben auf den "Code" Button, dann sieht er besser aus. :wink:
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.
Benutzeravatar
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.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Space hat geschrieben:Und wie funktioniert das mit den import das hab ich noch nicht ganz so gecheckt?
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.

Code: Alles auswählen

import math
bedeuted,Du hast das Python Mathebuch auf dem Tisch.
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
bedeuted, Du hast die Seite mit der Wurzelfunktion (square root) aufgeschlagen und darfst sie deshalb benutzen.
a fool with a tool is still a fool, www.magben.de, YouTube
Space
User
Beiträge: 22
Registriert: Montag 7. September 2015, 16:12

Achso cool
danke für die Tipps jetzt kapier ich das auch
Sag mal hat jemand noch etwas zu dem ich mich im programm schreiben üben könnte? 8)
Benutzeravatar
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
Space
User
Beiträge: 22
Registriert: Montag 7. September 2015, 16:12

Ist es so besser

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 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?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Space: man würde vorne eine Schleife einbauen. x ist kein aussagekräftiger Name. Eingerückt wird mit 4 Leerzeichen pro Ebene und wenn Du x = 1 eingibst, kommt nicht das Ergebnis, das Du Dir wünschst.
010010
User
Beiträge: 14
Registriert: Freitag 3. Juni 2016, 20:33

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)
Der Beitrag ist schon ein 3/4 Jahr alt, aber er hat mir so gut gefallen das ich meinen Code mal ebent eingegeben hab. Dort kann man alle drei Kanten des Dreiecks berechnen indem man für den gesuchten Wert einfach nur Null eingibt. Bei Python 3.5.1 ist es im Tewrminal leider so das man immer etwas eingeben muss.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.

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))
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

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()
BlackJack

Man könnte vielleicht noch prüfen das eingegebene Zahlen positiv sind. Benutzer kommen manchmal auf komische Ideen. :-)
Antworten