2016-04-04 6 views
1

Ich möchte eine eingegebene Zeichenfolge unter bestimmten Bedingungen testen. In diesem Fall mag ich die Zeichenfolge aus den Variablen mindestens ein numerisches Zeichen enthält ...String-Validierung nach Eingabe oder raw_input in Python

while any(inputted.isdigit()) == False: 
    print ("Inputted must contain at least one numeric character") # can't figure this one out 
    inputted = input("Please enter a combination: ") 

Ein idealer Eingang eine Zeichenfolge wie „Boat88Sea“

wäre sehr dankbar wäre jede Hilfe!

+0

Können Sie bitte ein Beispiel geben, welche Art von Eingaben Sie geben? Was ist ein typisches Beispiel für das, was in "eingegeben" ist – idjaw

+0

Eine ideale Eingabe wäre eine Zeichenfolge wie "Boat88Sea" –

Antwort

4

Sie müssen über die Eingabezeichenfolge iterieren:

input_string = "" 
while any(c.isdigit() for c in input_string) == False: 
    print ("the input string must contain at least one numerical character") 
    input_string = input("Please enter a combination: ") 

In dem Moment, jedes Zeichen in der Zeichenfolge gefunden wird, eine Ziffer zu sein, wird die while-Schleife verlassen.

Alternativ könnte dies lesen noch näher als das, was Sie wollen:
Solange nicht jedes Zeichen eine Ziffer in der Eingabezeichenfolge ist ...

while not any(c.isdigit() for c in inputted): 
+1

Sie brauchen nicht die eckigen Klammern, können Sie einfach einen Generator anstelle einer Liste verwenden. –

+0

Richtig, danke; Ich habe es geändert - aber ich bezweifle, dass es einen großen Unterschied macht, es ist unwahrscheinlich, dass der Input groß sein wird. –

1

Es gibt definitiv bessere Weise als dies:

cond = True 
while cond: 
    print ("Inputted must contain at least one numeric character") 
    inputted = input("Please enter a combination: ") 
    for x in range(0,9) : 
     if str(x) in inputted : cond = False 
Verwandte Themen