Wie sage ich zu python dass er an alle zahlen der Welt denken muss.um sue in einer Variable hineinzutun?

3 Antworten

Zu erst gibt es kein "alle Zahlen der Welt". Der Zahlenraum ist unendlich, hört also nie auf. Daher gehe ich auch nicht davon aus, dass du unendlichen Speicherplatz hast, das zieht dir da also auch noch einen Strich durch die Rechnung.

Was du höchstens machen kannst, ist den tatsächlichen Wert "unendlich" in eine Variable zu speichern.

Ab Python 3.5:

import math
test = math.inf

Unter Python 3.5:

test = float("inf")

Und ansonsten kannst du natürlich auch jede einzelne Zahl, Zahl für Zahl, in eine Liste speichern... Fragt sich nur was das für einen Zweck haben soll, da diese Schleife niemals enden wird:

numlist = []
while True:
  numlist.append(len(numlist))
Woher ich das weiß:Berufserfahrung – Inhaber einer App-Agentur & 15+ Jahre Programmiererfahrung

a) Seit Python 2.6 lässt sich die positive/negative Unendlichkeit repräsentativ abbilden:

(...) The float() function will now turn the string (...) +inf and -inf  into positive or negative infinity. This works on any platform with IEEE 754 semantics.

Quelle

So kannst du schreiben:

# positive infinity
number = float('inf')

# or
number = float('+inf')

# negative infinity
number = float('-inf')

Das math-Modul besitzt zudem eine Funktion isinf, die zumindest prüft, ob eine Zahl x der positiven oder negativen Unendlichkeit entspricht.

b) Die Variable wirst du in irgendeiner Form danach ja verwenden wollen und in dem Zuge müsstest du eh wieder über alle gespeicherten Daten laufen. Da wäre eine Kombination mit einer Schleife (oder zwei, die jeweils in eine Richtung laufen?) doch passend:

number = 0.0  # or any other start value

while True:
  # do something with number ...
  number = number + 1

Oder:

import math

number = 0.0  # or any other start value

while number < float('inf'):
  # do something with number ...
  number = number + 1

Beide Programme würden allerdings irgendwann zu einer Runtime Exception führen.

Eine maximale Grenze für einen regulären Integer wird übrigens so definiert:

sys.maxsize An integer giving the maximum value a variable of type Py_ssize_t can take. It’s usually 2^31 - 1 on a 32-bit platform and 2^63 - 1 on a 64-bit platform.

Quelle

Geht ein Wert darüber hinaus, wechselt er implizit den Datentyp zu long. Eine konkrete Limitierung gibt es sei Python 3 ansonsten nicht mehr:

The sys.maxint constant was removed, since there is no longer a limit to the value of integers.

Quelle

c) Wenn es darum geht, eine Logik abzuprüfen, dann drehe die zu suchende Menge um. Du würdest dann also eher alle Werte definieren, die keiner Zahl entsprechen. Das könntest du bspw. mit einem expliziten Typecast prüfen:

def is_number(value):
  try:
    float(value)
    return True
  except ValueError:
    return False

is_number(5) # or any other value ...

oder du nutzt bereits implementierte Funktionen der Standardbibliothek für spezielle Prüfungen (isdigit, isdecimal, isnan, ...).

Gar nicht.

Wobei es evtl. ganz praktisch sein könnte, wenn du etwas verständlicher formulierst, was du vorhast. Vielleicht gehts ja doch, wenn es nicht ganz so konfus formuliert ist.