Seite 1 von 1

Abfrage ob die Eingabe eine Zahl ist

Verfasst: Dienstag 2. November 2010, 22:05
von CodeMaster
Ich habe ein Problem, un zwar will ich ja abfragen ob meine Eingabe eine Zahl ist.
Da hat sich in diesem Code jetzt folgendes Problem herausgestellt:

Code: Alles auswählen

#-*- coding: utf-8 -*-
import random

while True:
    print """
== ======================================= ==
== Waehle eine Zahl aus.                   =====
== Dann werde ich mir eine Zahl zwischen 1 =========
== und der ausgewaehlten Zahl aussuchen,   =============
== die du dann erraten kannst.             =================
== ======================================= ======================
"""
    OneTo = input("1-")
    
    try:
        OneTo = float(OneTo)
        print "True"
        
    except ValueError:
        print("{0} ist keine Zahl".format(OneTo))
Wie man sieht, will ich ein komplett leichtes Spiel machen.
Aber es passiert jetzt folgendes:
wenn ich am anfang statt einer Zahl einen Buchstaben eingebe, gibt es ein Error und der Code hört auf zu arbeiten
Das möchte ich aber nicht, ich will das dann einfach die Nachricht kommt, das OneTo keine Zahl ist.

(die Stelle mit dem try und except wurde mir von jemand anderem vorgeschlagen)

MfG CodeMaster

Re: Abfrage ob die Eingabe eine Zahl ist

Verfasst: Dienstag 2. November 2010, 22:15
von jbs
raw_input

Re: Abfrage ob die Eingabe eine Zahl ist

Verfasst: Dienstag 2. November 2010, 22:27
von CodeMaster
ahh ok danke :)

Re: Abfrage ob die Eingabe eine Zahl ist

Verfasst: Dienstag 2. November 2010, 22:48
von CodeMaster
Ein neues Problem ist jetzt aufgetreten:

Code: Alles auswählen

#-*- coding: utf-8 -*-
import random

while True:
    print """
== ======================================= ==
== Waehle eine Zahl aus.                   =====
== Dann werde ich mir eine Zahl zwischen 1 =========
== und der ausgewaehlten Zahl aussuchen,   =============
== die du dann erraten kannst.             =================
== ======================================= ======================
"""
    OneTo = raw_input("1-")
    
    try:
        OneTo = float(OneTo)
        print "Ok ich habe mir nun eine Zahl zwischen 1-{0} ausgesucht, ratest du auch welche?"
        RandomNumber = randint(1,OneTo)
        print ("Random Num: "+str(RandomNumber))
    except ValueError:
        print("{0} ist keine Zahl".format(OneTo))
Und zwar kommt ein Error, da durch raw_input anscheinend kein integer zustande kommen kann, wie löse ich das problem jetzt am besten?

Re: Abfrage ob die Eingabe eine Zahl ist

Verfasst: Dienstag 2. November 2010, 23:02
von cofi
CodeMaster hat geschrieben:Und zwar kommt ein Error, da durch raw_input anscheinend kein integer zustande kommen kann, wie löse ich das problem jetzt am besten?
Das ist richtig, aber nicht das Problem. Selbst wenn `raw_input` ein `int` zurueckgeben wuerde, wuerdest du es erst zu einem `float` machen und erst dann an `random.randint` uebergeben, was nie funktionieren wird.

Re: Abfrage ob die Eingabe eine Zahl ist

Verfasst: Dienstag 2. November 2010, 23:35
von jbs
Entweder ``from random import randint`` oder ``random.randint``.

Edit: Und http://wiki.python-forum.de/PEP%208%20% ... setzung%29 solltest du dir angucken.