2016-10-24 103 views
1

因此我已經分配了一個賦值(顯然),以檢查用戶輸入的輸入格式是否正確,方式爲AA99AAA(其中A是一個字母並且9是從0到9的數字)。因此,對於輸入中的第一個字符,它必須是一個字母或python纔會返回某種錯誤,等等,您就明白了。我不知道從哪裏開始,我嘗試過四處尋找並沒有發現任何東西 - 我想我只是不知道我在找什麼。任何指針將不勝感激,謝謝!檢查輸入是否在Python 3中被正確格式化

+0

您可以使用正則表達式。檢查:https://docs.python.org/2/library/re.html。和+1,因爲你沒有要求解決方案,但只有開始 –

+0

正則表達式可能有點難,或者你可以遍歷你的字符串,並檢查每個字符的ascii值是否在ascii值的範圍內, 9'和'A'(或者你需要什麼字符) –

+0

我會給出正則表達式的一個嘗試,但是如果這證明太困難了,你會怎樣去做ASCII的方式?只需使用某種循環並每次檢查一次? –

回答

2

要做到這一點,你可以將字符串分成3部分(第一組字母,數字,然後第二組字母)。那麼你可以使用s.isalpha()s.isnumeric()

例如:

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

我不知道你可以這樣做:2或4:就是這樣。它整理了我的格式,現在它適用於我。謝謝! –

+0

'[:2]'和'[4:]'拼接到列表的任何一端。編寫代碼時,它們可以節省時間。 – boboquack

1

你能否提供更多關於這個問題的信息,你提供的格式是你試圖匹配的例子嗎? AA99AAA,所以2-alpha,2-numeric,3-alpha?

有兩種方法可以在我的頭頂取下,其中一種方法是利用正則表達式匹配[\w]{2}[\d]{2}[\w]{3}之類的東西,或者您可以迭代字符串(回想一下字符串是字符數組)。

對於這種方法,你將不得不產生子隔離部件你有興趣,所以..

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

肯定有更多的Python化的方式來處理這個,但是這應該是足夠的信息來幫助你正式一個辦法。

+1

當OP只想要一個啓動並想學習編程時,將某個解決方案丟棄在某個人身上是不好的。學習編程困難的方式使人們更好的程序員:) –

+0

是的,這是我試圖匹配的格式。我看到你在這裏做什麼,這有助於很多,謝謝! –

1

我終於做到了!約一小時後...

所以我用[]格式和.isdigit/.isalpha檢查代碼的每一部分,像上述建議,但我做到了,在一個稍微不同的方式:

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 

希望這可以幫助其他任何人解決這個問題!

相關問題