Seite 1 von 1

befehl für den betrag?

Verfasst: Freitag 24. November 2006, 13:44
von Cthulhu
hallo
ich wollt mal fragen ob es einen befehl gibt um den betrag einer tahl zu kriegen???
also dass eine zahl immer positiv ist!
(bitte keine antworten von wegen: schau ob die zahl negativ ist und mach dann mal -1)

DANKE

Verfasst: Freitag 24. November 2006, 13:54
von Python 47
Tja ich würd ganz einfach sagen:

schau ob die zahl negativ ist und mach dann mal -1 *SCNR*

und jetzt die Richtige Antwort:

Code: Alles auswählen

x=-12
abs(x)
x=12
abs(x)

Verfasst: Freitag 24. November 2006, 16:32
von Leonidas
Wie Python Master 47 schon sagte, den Betrag gibt es mit abs(). Kann man sich auch einfach merken, denn der Betrag ist nur ein anderes Wort für den Absolutwert.

And now the fun part: Wie wärs mit einer (sinnloserweise) rekursiven Funktion, zum Bestimmen des Betrages?

Code: Alles auswählen

In [1]: def recurabs(number):
   ...:     if number >= 0:
   ...:         return number
   ...:     else:
   ...:         return recurabs(-number)

Verfasst: Freitag 24. November 2006, 16:58
von mitsuhiko
Leonidas hat geschrieben:And now the fun part: Wie wärs mit einer (sinnloserweise) rekursiven Funktion, zum Bestimmen des Betrages?
Das geht besser:

Code: Alles auswählen

>>> import math
>>> def abs(x):
...  if x >= 0:
...   return x
...  n = math.sqrt(x ** 2)
...  return abs(type(x)(n))
... 
>>> abs(-42)
42
>>> abs(-4234.234)
4234.2340000000004
>>> abs(2323.232)
2323.232
:D

Verfasst: Freitag 24. November 2006, 17:00
von Leonidas
Juhu, das erinnert mich an [wiki]Anzahl der Es in einem String[/wiki] - vielleicht sollten wir wieder so eine Seite machen? Ich steurere Meine Lösung mal bei :D

Verfasst: Freitag 24. November 2006, 20:57
von EyDu
Mit if-Statements arbeiten ist doch langweilig :D

Code: Alles auswählen

def labs(x):
    return max(range(x+1) + range(-x+1))
Sebastian

EDIT: Die Nullen als Startwerte in Range sind doch irgendwie überflüssig...

unterschätzt nie die Macht der strings

Verfasst: Freitag 24. November 2006, 21:41
von tiax

Code: Alles auswählen

def string_abs(zahl):
    return float(str(zahl).replace('-',''))
:mrgreen:

Verfasst: Freitag 24. November 2006, 22:09
von Leonidas
Ich konnte nicht widerstehen [wiki]Betrag bestimmen[/wiki] anzulegen :)

Verfasst: Samstag 25. November 2006, 00:39
von merlin_emrys
Leonidas hat geschrieben:Ich konnte nicht widerstehen [wiki]Betrag bestimmen[/wiki] anzulegen :)
Methode 6 muss ich mir merken... :-D

Verfasst: Samstag 25. November 2006, 11:36
von Joghurt
Es geht auch mit linearer Laufzeit, allerdings nur für ints/longs

Code: Alles auswählen

def betrag(x):
  if not isinstance(x, (long,int)):
    raise TypeError("argument must be integer")
  y = 1
  while True:
    if (x+y)*(x-y) == 0:
      return y
    y += 1

Verfasst: Samstag 25. November 2006, 13:09
von r2d2
in zeiten von web 2.0 ist es immer angebracht den user zu fragen.

Code: Alles auswählen

def web20abs(x):
    ergebnismenge = [x, x*(-1)]
    userentscheidung = ""
    print "Welche Zahl ist größer?"
    print "Geben Sie [1] für", x, "| [2] für", x*(-1), "ein."
    while True:
        if not userentscheidung in [1, 2]:
            userentscheidung = int(raw_input("?"))
        else: break
    return ergebnismenge[userentscheidung - 1]
auf wahrheitsgehalt der usermeinung wird nicht geprüft. denn: der user hat immer recht.

r2d2

Edit (Leonidas): web2.0-Diskussion in den Thread Wer oder was ist web2.0? verschoben.