2016-04-25 21 views
0

Ich habe Python für GCSE studiert, kann aber meinen Code nicht so funktionieren lassen, wie er sollte (er akzeptiert 4-stellige + Zahlen, obwohl dies nicht der Fall sein sollte), obwohl ich überprüft habe, dass die Codierung durch Lehrer usw .Python 3.3 Reguläre Ausdrücke?

import re 
val = input("Please enter a three-digit number: ") 
valid = re.match("[0-9]{3}",val) 
if valid: 
     print("Accepted. ") 
else: 
     print("Rejected. Invalid input. ") 

Ich weiß wirklich nicht, warum das nicht richtig funktioniert. Hat jemand irgendwelche Ideen?

+0

're.match ("[0-9] {3} $", val)' (oder ' re.match (r "[0-9] {3} \ z", val) ') –

Antwort

0

re.match Streichhölzer, solange das Muster am Anfang des angegebenen Zeichenfolge übereinstimmt. Sie müssen $ verwenden die Zeichenfolge auch mit den Schnurenden zu gewährleisten:

valid = re.match("[0-9]{3}$",val) 

>>> re.match('[0-9]{3}', '123') 
<_sre.SRE_Match object at 0x7effd9905f38> 
>>> re.match('[0-9]{3}', '1234') 
<_sre.SRE_Match object at 0x7effd9852030> 


>>> re.match('[0-9]{3}$', '123') 
<_sre.SRE_Match object at 0x7effd9905f38> 
>>> re.match('[0-9]{3}$', '1234') 
>>> 
+0

Danke das hat sehr geholfen, das Programm funktioniert jetzt nahtlos! –