befehl für den betrag?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Cthulhu
User
Beiträge: 38
Registriert: Freitag 17. November 2006, 16:00

befehl für den betrag?

Beitragvon Cthulhu » Freitag 24. November 2006, 13:44

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
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Freitag 24. November 2006, 13:54

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

Thomas :-)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 24. November 2006, 16:32

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)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Freitag 24. November 2006, 16:58

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
TUFKAB – the user formerly known as blackbird
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 24. November 2006, 17:00

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
My god, it's full of CARs! | Leonidasvoice vs Modvoice
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Freitag 24. November 2006, 20:57

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...
Benutzeravatar
tiax
User
Beiträge: 152
Registriert: Samstag 23. Juli 2005, 17:28
Kontaktdaten:

unterschätzt nie die Macht der strings

Beitragvon tiax » Freitag 24. November 2006, 21:41

Code: Alles auswählen

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


:mrgreen:
Ne invoces expellere non possis
xmpp:florian@florianheinle.de
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 24. November 2006, 22:09

Ich konnte nicht widerstehen [wiki]Betrag bestimmen[/wiki] anzulegen :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
merlin_emrys
User
Beiträge: 110
Registriert: Freitag 3. März 2006, 09:47

Beitragvon merlin_emrys » Samstag 25. November 2006, 00:39

Leonidas hat geschrieben:Ich konnte nicht widerstehen [wiki]Betrag bestimmen[/wiki] anzulegen :)

Methode 6 muss ich mir merken... :-D
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Samstag 25. November 2006, 11:36

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
r2d2
User
Beiträge: 43
Registriert: Donnerstag 2. März 2006, 23:05
Wohnort: Bielefeld

Beitragvon r2d2 » Samstag 25. November 2006, 13:09

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.
äh, nimm diese schlange von meinem hals.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder