Seite 1 von 1

Python String zu Int

Verfasst: Freitag 13. März 2015, 18:20
von LeonEtienne
Hallo. Ich bin noch ein blutiger Anfänger mit Python. Ich wollte ein Programm machen, in welches man am Anfang eine Zahl eingeben soll, und dann listet das Programm alle zahlen auf.
Aber irgendwie kommt nachdem man die Zahl eingibt dieser Error: :K

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Users\PC REMOTE\Desktop\Programm.py", line 4, in <module>
    while i <= x:
TypeError: unorderable types: int() <= str()
Hier ist mein Quelltext:

Code: Alles auswählen

x = input('Zahl: ')
float(x)
i = 1
while i <= x:
    print(i)
    i+=1
input()
Ich habe es schon mit

Code: Alles auswählen

float(x)
oder

Code: Alles auswählen

int(x)
und sogar

Code: Alles auswählen

 int(float(x))
Bite um hilfe!

Lösung:

Code: Alles auswählen

x = int(input('text'))

Re: Python String zu Int

Verfasst: Freitag 13. März 2015, 19:12
von EyDu
Hallo und willkommen im Forum!

Durch Aufruf von int oder float wird aus einem String nicht auf magische Weise ein Integer, bzw. Float. Du suchst

Code: Alles auswählen

x = float(x)
Die while-Schleife ist an dieser Stelle die falsche Wahl. Wenn du vorher weißt wie oft eine Schleife durchlaufen wird, dann solltest du eine for-Schleife verwenden. Dann sparst du dir auch das händische Hochzählen von i.

Re: Python String zu Int

Verfasst: Freitag 13. März 2015, 19:16
von Pygoscelis papua
x = int(input('Zahl'))

Re: Python String zu Int

Verfasst: Freitag 13. März 2015, 19:19
von ulli82
x = int(input('Zahl: '))

Re: Python String zu Int

Verfasst: Samstag 14. März 2015, 21:23
von pixewakb
Schau mal, ob du meinen Quelltext verstehst:

Code: Alles auswählen

print("Eingabe x zum Beenden!")

while True:
    
    x = input('Zahl: ')
    
    if x == "x":
        print("Sie haben das Programm beendet!")
        break
    else:
        x = int(x)
    
    for i in range(1, x + 1):
        
        print(i)
Ich habe den Verdacht, dass du Programme nicht direkt aus IDLE aus startest, was mit F5 geht. Wenn du die Programme in der Konsole startest, dann verlangsamt das deine Entwicklungszeit (bei der Fehlersuche, zumindest ist das meine Erfahrung).

Re: Python String zu Int

Verfasst: Samstag 14. März 2015, 22:51
von Ene Uran
So geht es auch ...

Code: Alles auswählen

for k in range(1, int(input("Zahl: "))+1):
    print(k)
... ohne error test.

Re: Python String zu Int

Verfasst: Sonntag 15. März 2015, 09:38
von pixewakb
Weiß nicht, ob das so (für ihn) noch lesbar ist.

Re: Python String zu Int

Verfasst: Sonntag 15. März 2015, 11:25
von Sirius3
@Ene Uran: für mich ist das auch nicht mehr lesbar, weil hier zu viel Eingabe mit Verarbeitungslogik vermischt wird.

Re: Python String zu Int

Verfasst: Montag 16. März 2015, 17:07
von Pygoscelis papua
Wenn das hier python3 ist. Wenn schon ,denn schon...

Code: Alles auswählen

[print(k) for k in range(1, int(input("Zahl: "))+1)]

Re: Python String zu Int

Verfasst: Montag 16. März 2015, 17:23
von Sirius3
@Pygoscelis papua: und was fängst Du mit der Liste, in der lauter None stehen an?

Re: Python String zu Int

Verfasst: Montag 16. März 2015, 17:37
von Pygoscelis papua
Was ich damit anfange? Ich frage mich woher sie kommt! :)

man könnte allerdings folgendes tuen:

Code: Alles auswählen

b = list()
[ b.append(k) for k in range(1, int(input("Zahl: "))+1) ]
print(b)
Damit wärs aber auch nicht kürzer.

Re: Python String zu Int

Verfasst: Montag 16. März 2015, 18:09
von EyDu
Das ist noch immer eine Liste voller Nones. Wenn du die ks sammeln willst, dann kannst du das auch gleich in der List Comprehension machen:

Code: Alles auswählen

[k for k in range(1, int(input("Zahl: "))+1) ]
das ist aber nichts anderes als

Code: Alles auswählen

list(range(1, int(input("Zahl: "))+1))
Allerdings möchte man in diesem Fall gar keine List Comprehension verwenden. Die sind dazu da um Listen zu erzeugen, keine kurze Variante für for-Schleifen. Wenn du das Ergebnis einer LC nicht verwendest, dann verwende keine LC, sondern eine echte for-Schleife.