我必須驗證字符串是 4 位還是 6 位。字符串不能包含任何字符,只能包含整數。如果滿足條件則返回真,否則返回假。我嘗試創建一個包含可接受數字的列表并遍歷字符串并進行比較。如果字符串的任何部分不在可接受的列表中,我將退出循環并返回 false。如果運行總數等于 4 或 6,那么它應該是真的。蟒蛇代碼:def validate(n): count = 0 valid_list = list(range(10)) for digit in pin: if digit not in valid_list: return False count += 1我不確定為什么像 1234 這樣的東西被返回為 False。
2 回答

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
用正則表達式怎么樣?
import re
str="03506"
pattern="[0-9]{4,6}"
prog=re.compile(pattern)
result=prog.match(str)
if result:
return True
else:
return False
這匹配長度在 4 到 6 個字符之間的數字。如果您的意思是要匹配那些 4 或 6 長的字符串,您可以嘗試
import re
str="03506"
pattern1="[0-9]{4}"
pattern2="[0-9]{6}"
if re.match(pattern1,str) or re.match(pattern2, str):
return True
else:
return False

手掌心
TA貢獻1942條經驗 獲得超3個贊
我不確定為什么像 1234 這樣的東西被返回為 False。
Python 永遠不會在整數和字符串之間進行隱式轉換,并且整數和字符串之間的比較總是錯誤的。
“valid_list”是一個整數列表,但“digit”是一個字符串,所以你永遠不會在你的列表中找到任何東西。
添加回答
舉報
0/150
提交
取消