Seite 1 von 2

Wurzel ziehen

Verfasst: Sonntag 20. November 2005, 14:46
von Python 47
Hallo!

Ich hab mir ein Programm geschrieben das den Satz des Pytagoras berechnet:

Code: Alles auswählen

def Pytagoras(a, b):
   if a<0:
      print 'Der Satz des Pytagoras funktioniert nur mit positiven Zahlen'
   elif b<0:
      'Der Satz des Pytagoras funktioniert nur mit positiven Zahlen'
   elif type (a) == type (str):
      print 'Der Satz des Pytagoras funktioniert nur mit Zahlen'
   elif type (b) == type (str):
      print 'Der Satz des Pytagoras funktioniert nur mit Zahlen'
   else:
      c=a**2+b**2
      return c
      
      
Aber wie ziehe ich nun die Wurzel aus a**2+b**2 und wie schaffe ich es das ich die Funktion nicht aufrufen muss sondern das auf den Bildschirm erscheint a= dann gebe ich a ein und dann kommt b= dann gebe ich b ein und die ausgabe ist dann c .

Und warum hat sich das Programm beklagt als ich den Code so geschrieben habe:

Code: Alles auswählen

def Pytagoras(a, b):
   if a<0 or b<0:
      print 'Der Satz des Pytagoras funktioniert nur mit positiven Zahlen'
   elif type (a) or type (b) == type (str):
      print 'Der Satz des Pytagoras funktioniert nur mit Zahlen'
   else:
      c=a**2+b**2
      return c

      
      

Verfasst: Sonntag 20. November 2005, 14:52
von Leonidas
raw_input("a= ") und math.sqrt() helfen dir weiter.

Verfasst: Sonntag 20. November 2005, 14:54
von mawe
Hi!

Statt math.sqrt(x) kann man auch x**0.5 verwenden :)
Bei Deiner 2. Fassung versuch mal

Code: Alles auswählen

elif (type(a) or type(b)) == type(str):
Gruß, mawe

Verfasst: Sonntag 20. November 2005, 15:09
von Python 47
@Leonidas ich kenne beide funktionen, weiß sie aber noch nicht richtig anzuwenden.


Wer kann mir weiterhelfen?

Verfasst: Sonntag 20. November 2005, 15:16
von Leonidas

Code: Alles auswählen

In [1]: import math
In [2]: math.sqrt(4)
Out[2]: 2.0
In [3]: user_text = raw_input('a = ')
a = 123
In [4]: user_text
Out[4]: '123'

Verfasst: Sonntag 20. November 2005, 15:18
von Gast
dir fehlt noch eine Funktion um deine Code abzurufen!!

Verfasst: Sonntag 20. November 2005, 15:48
von Python 47
Wie abzurufen??

Es hat alles geklappt mir raw_input und math.sqrt nur ein Problem hab ich noch: Wie schaffe ich es das wenn ich a und b eingegeben habe das dann sofort a und b an die Funktion gegeben werden und diese ausgeführt wird und als ausgabe c kommt?

Verfasst: Sonntag 20. November 2005, 16:20
von Joghurt
Ähm?

Code: Alles auswählen

c = Pythagoras(a,b)
if c != None:
  print c

Verfasst: Sonntag 20. November 2005, 17:03
von Python 47
Also mein Code sieht jetzt so aus:

Code: Alles auswählen

import math
user_Text = raw_input('a=')
user_Text= raw_input('b=')
 c = Pythagoras(a, b)
if c != None:
  print c
def Pytagoras(a, b):
   if (a<0 or b<0):
      print 'Der Satz des Pytagoras funktioniert nur mit positiven Zahlen'
   elif (type (a) or type (b)) == type(str):
      print 'Der Satz des Pytagoras funktioniert nur mit Zahlen'
   else:
      return math.sqrt(a**2+b**2)
Was ist daran noch falsch?Eigentlich ist doch die variabelnzuweisung von c
falsch weil ja bei einer Variablenzuweisung ein wert vom typ float oder integer sein muss und der andere die variable, oder?

Verfasst: Sonntag 20. November 2005, 17:39
von mitsuhiko

Code: Alles auswählen

import math

def pythagoras(a, b):
    try:
        return math.sqrt(a**2+b**2)
    except:
        

if __name__ = '__main__':
    a = raw_input('a=')
    b = raw_input('b=')
    try:
        c = pythagoras(int(a), int(b))
        print c
    except ValueError:
        print 'Der Satz des Pytagoras funktioniert nur mit positiven Zahlen'
    except TypeError:
        print 'Der Satz des Pytagoras funktioniert nur mit Zahlen'
//edit: lieber mit try/except :)

Verfasst: Sonntag 20. November 2005, 17:42
von Joghurt
Zur Erläuterung: Du musst Pythagoras erst "def"inieren, bevor du es aufrufen kannst.
Das "if __name__ == "__name__"" ist nur Konvention, damit du später einfach mit "import pythagoras" die Funktion pythagoras.Pythagoras importieren kannst (wenn die Datei "pythagoras.py" heisst)

Verfasst: Sonntag 20. November 2005, 19:50
von Python 47
sorry aber try und except kenn ich nicht.Wie kann man das lösen mit den sachen die ich kenn also mit meinem code

Verfasst: Sonntag 20. November 2005, 21:38
von mitsuhiko
Python Master 47 hat geschrieben:sorry aber try und except kenn ich nicht.Wie kann man das lösen mit den sachen die ich kenn also mit meinem code
try/except lernen :roll:

Verfasst: Montag 21. November 2005, 13:24
von Leonidas
blackbird hat geschrieben:try/except lernen :roll:
Ist wirklich nicht zu viel verlangt, da try/except wirklich ein Grundprinzip vieler Programmiersprachen ist. Das ist ja fast so als könnte man kein if ;)

Verfasst: Montag 21. November 2005, 14:28
von Python 47
@blackbird dein code funzt nicht.

Es muss so aussehen:

Code: Alles auswählen

import math

def pythagoras(a, b):
    try:
        return math.sqrt(a**2+b**2)
    except:
       if __name__ == '__main__':
          a = raw_input('a=')
          b = raw_input('b=')
    try:
        c = pythagoras(int(a), int(b))
        print c
    except ValueError:
        print 'Der Satz des Pytagoras funktioniert nur mit positiven Zahlen'
    except TypeError:
        print 'Der Satz des Pytagoras funktioniert nur mit Zahlen'
Das programm macht auch nichts es gibt keine a= oder b= auf den bildschirm aus und die funktion wird auch nicht automatisch aufgerufen!Das hilft mir auch nicht weiter!

Danke für die Hilfe!!!

Verfasst: Montag 21. November 2005, 14:55
von Phoenix

Code: Alles auswählen

#!/usr/bin/python

import math 
 
def pythagoras(a, b): 
     try: 
         return math.sqrt(a**2+b**2) 
     except: 
         return False
 
if __name__ == '__main__': 
     a = raw_input('a=') 
     b = raw_input('b=') 
     try: 
         c = pythagoras(int(a), int(b)) 
         print c 
     except ValueError: 
         print 'Der Satz des Pytagoras funktioniert nur mit positiven Zahlen' 
     except TypeError: 
         print 'Der Satz des Pytagoras funktioniert nur mit Zahlen'
Du hast die zeilen nicht richtig eingerueckt, das programm funktioniert so.
Nur wuerde ich math nicht importieren, sondern die Wurzel anders ziehen:

Code: Alles auswählen

def pythagoras(a, b): 
     try: 
         return (a**2+b**2)**0.5
     except: 
         return False
[/code]

Verfasst: Montag 21. November 2005, 15:24
von Python 47
meinst du mich?Ich habe richtig eingerückt.Blackbird hat falsch eingerückt und ha anstatt == nur = geschrieben.Aber das passiert jedem mal.

Also das bringt mich trotzdem nicht weiter.Wie schaffe ich es das die werte die ich durch raw input eingebe an die funktion weiter geletitet werden und diese automatisch ausgeführt wird und mir c ausgibt???

Verfasst: Montag 21. November 2005, 15:30
von joe
Python Master 47 hat geschrieben:meinst du mich?Ich habe richtig eingerückt.
Nein, hast du nicht. if __name__ == '__main__': einzurücken ist von programmablauf doch völlig sinnlos. Ist das nicht erkennbar?
Python Master 47 hat geschrieben:Also das bringt mich trotzdem nicht weiter.Wie schaffe ich es das die werte die ich durch raw input eingebe an die funktion weiter geletitet werden und diese automatisch ausgeführt wird und mir c ausgibt???
Indem du phönix' code ausführst.
joe

Verfasst: Montag 21. November 2005, 15:32
von Leonidas
Etwas Offtopic, sorry:
joe hat geschrieben:joe
Joe, könntest du dich registieren? Ich habe von dir schon viele gute Beiträge gelesen und wir (PythonDe-Krisenstab) überlegen, das Gast-Posten zu deaktivieren :?

Verfasst: Montag 21. November 2005, 15:57
von Phoenix
Python Master 47 hat geschrieben:Wie schaffe ich es das die werte die ich durch raw input eingebe an die funktion weiter geletitet werden und diese automatisch ausgeführt wird und mir c ausgibt???
dieser Teil :

Code: Alles auswählen

         c = pythagoras(int(a), int(b)) 
         print c 
Übergibt die Werte in a und b an die Funktion pythagoras und führt diese aus.
Das Ergebnis wird dann in c gespeichert und mit print ausgegeben.