2016-10-24 5 views
1

formatiert ist, so dass mir offensichtlich eine Zuweisung zugewiesen wurde, um zu überprüfen, ob eine Eingabe, die ein Benutzer eingegeben hat, korrekt ist, wie AA99AAA (wobei A ein Buchstabe und 9 ist) ist eine Zahl von 0 bis 9). Also für das erste Zeichen in der Eingabe müsste es ein Buchstabe sein oder Python würde eine Art von Fehler zurückgeben und so weiter, Sie bekommen die Idee. Ich habe keine Ahnung, wo ich damit anfangen soll, ich habe versucht, mich umzusehen und habe nichts gefunden - ich glaube, ich weiß einfach nicht, wonach ich suche. Alle Hinweise würden sehr geschätzt werden, danke!Überprüfen, ob eine Eingabe korrekt in Python 3

+0

Sie können Regex verwenden. Überprüfen Sie: https://docs.python.org/2/library/re.html. und +1, da Sie nicht nach einer Lösung gefragt haben, aber nur der Kopf –

+0

Regex kann etwas schwierig sein, alternativ können Sie über Ihre Zeichenfolge iterieren und überprüfen, dass der ASCII-Wert jedes Zeichens innerhalb des Bereichs der ASCII-Werte von "0" liegt. 9' und 'A' (oder was auch immer Charakter du benötigst) –

+0

Ich werde der Regex einen Versuch geben, aber wenn das zu schwierig wird, wie würdest du es auf die ASCII Art machen? Verwenden Sie einfach eine Art von Schleife und überprüfen Sie es jedes Mal? –

Antwort

2

Um dies zu tun, könnten Sie die Zeichenfolge in 3 Teile aufteilen (die erste Gruppe von Buchstaben, die Zahlen und dann die zweite Gruppe von Buchstaben). Dann können Sie s.isalpha() und s.isnumeric() verwenden.

Zum Beispiel:

while True: 
    c=input('Password: ') 
    if len(c)==7 and c[:2].isalpha() and c[2:4].isnumeric() and c[4:].isalpha(): 
     break 
    else: 
     print('Invalid input') 
print('Valid input') 
+0

Ich war mir nicht bewusst, dass Sie tun könnten: 2 oder 4: so. Es hat meine Formatierung aussortiert und es funktioniert jetzt für mich. Vielen Dank! –

+0

'[: 2]' und '[4:]' sind Spleiße an jedem Ende der Liste. Sie sind nützlich, um beim Schreiben von Code Zeit zu sparen. – boboquack

1

Können Sie weitere Informationen zu der Frage angeben, ist das Beispiel, das Sie angegeben haben, das Format, das Sie versuchen zu entsprechen? AA99AAA, also 2-alpha, 2-numerisch, 3-alpha?

Es gibt zwei Ansätze von der Spitze meines Kopfes, die Sie hier nehmen könnten, wäre eine Verwendung von regulären Ausdrücken auf etwas wie [\w]{2}[\d]{2}[\w]{3}, alternativ könnten Sie die Zeichenfolge durchlaufen (erinnern, dass Zeichenfolgen Zeichenarrays sind).

Für diesen Ansatz würden Sie Substrings erzeugen müssen, um Teile zu isolieren, sind Sie interessiert. Also ..

for c in user_input[0:2]: 
    if c.isdigit: 
     print('Invalid Input') 
for c in user_input[3:5]: 
... 
... 

Es gibt definitiv mehr pythonic Möglichkeiten, dies zu nähern, aber dies sollte genügend Informationen, um Ihnen zu helfen formalisieren eine Lösung.

+1

Es ist nicht gut, die Lösung jemandem wegzuwerfen, wenn das OP nur einen Vorsprung will und Programmierung lernen will . Das Programmieren auf die harte Tour macht Leute zu einem besseren Programmierer :) –

+0

Ja, das ist das Format, das ich versuche zu vergleichen. Ich sehe, was du hier machst, das hilft sehr, danke! –

1

Ich habe es endlich geschafft! Nach etwa einer Stunde ...

So habe ich [] Formatierung und .isdigit/.isalpha jeden Teil des Codes zu überprüfen, wie oben empfohlen, jedoch habe ich es auf eine etwas andere Art und Weise:

while True: 
regNo = input("Registration number:") 
if len(regNo) != 7: 
    print("Invalid Registration Number! Please try again") 
elif regNo[:2].isdigit(): 
    print("Invalid Registration Number! Please try again!") 
elif regNo[2:4].isalpha(): 
    print("Invalid Registration Number! Please try again!") 
elif regNo[4:].isdigit(): 
    print("Invalid Registration Number! Please try again!") 
else: 
    break 

Hoffentlich hilft dies jedem anderen, der über dieses Problem stolpert!

Verwandte Themen