Wie sage ich zu python dass er an alle zahlen der Welt denken muss.um sue in einer Variable hineinzutun?
3 Antworten
![](https://images.gutefrage.net/media/user/Functional/1676159504902_nmmslarge__0_0_960_960_e2ac34e1b18f19102f515d8e9bd9a8ba.jpg?v=1676159505000)
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))
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
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.
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.
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.
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, ...).
![](https://images.gutefrage.net/media/user/Isendrak/1555747535308_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1555747535000)
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.