2023年5月13日 星期六

Python 學習筆記 : 字集排列的過濾 (十)

本篇為追加過濾兩個字尾母音規則的第二個測試, 本系列之前的筆記參考 : 


第八道過濾的規則是 : "每12字排列中,a, i, o, u 四個母音字母(變成一群),以這四個母音字母「結尾」的字有0~1個". 此規則的正規式如下 :

ptn=re.compile(r'\b\w*[aiou]\b')      # 以 a, i, o, u 四個母音字母結尾的字     

第一個測試語料是沒有以 a, i, o, u 四個母音字母結尾的字的情況 (應入選) :

>>> import re 
>>> words=('please', 'age', 'pole', 'check', 'close', 'open', 'silent', 'apology', 'trial', 'engage', 'more', 'license')   
>>> ptn=re.compile(r'\b\w*[aiou]\b')      # a, i, o, u 四個母音字母結尾的字
>>> end_aiou=[True if re.match(ptn, w) else False for w in words]   
>>> end_aiou    
[False, False, False, False, False, False, False, False, False, False, False, False]
>>> if end_aiou.count(True) > 1:    # True 個數須不超過 1 個 才入選                      
    print('the permutation is excluded')       
else:      
    print('the permutation is included') 
    
the permutation is included  

可見含有 0 個以 a, i, o, u 四個母音字母結尾的字被納入. 

其次測試含有 1 個以 a, i, o, u 四個母音字母結尾的語料 : 

>>> words=('please', 'ago', 'pole', 'check', 'close', 'open', 'silent', 'apology', 'trial', 'engage', 'more', 'license')   
>>> ptn=re.compile(r'\b\w*[aiou]\b')      # a, i, o, u 四個母音字母結尾的字
>>> end_aiou=[True if re.match(ptn, w) else False for w in words]   
>>> end_aiou    
[False, True, False, False, False, False, False, False, False, False, False, False]
>>> if end_aiou.count(True) > 1:    # True 個數須不超過 1 個 才入選                      
    print('the permutation is excluded')       
else:      
    print('the permutation is included') 
    
the permutation is included 

可見含有 1 個以 a, i, o, u 四個母音字母結尾的字也被納入. 

接下來測試含有 2 個以 a, i, o, u 四個母音字母結尾的語料 : 

>>> words=('please', 'ago', 'pole', 'check', 'close', 'open', 'silent', 'apology', 'trial', 'engage', 'more', 'alumni')   
>>> ptn=re.compile(r'\b\w*[aiou]\b')      # a, i, o, u 四個母音字母結尾的字
>>> end_aiou=[True if re.match(ptn, w) else False for w in words]   
>>> end_aiou    
[False, True, False, False, False, False, False, False, False, False, False, True]
>>> if end_aiou.count(True) > 1:    # True 個數須不超過 1 個 才入選                      
    print('the permutation is excluded')       
else:      
    print('the permutation is included') 
    
the permutation is excluded    

以上測試可以寫成如下程式於命令列執行 :

#  perm_test_8.py
#  以 a, i, o, u 四個母音字母結尾的字不超過 1 個
import re

words=('please', 'age', 'pole', 'check', 'close', 'open', 'silent', 'apology', 'trial', 'engage', 'more', 'license')
ptn=re.compile(r'\b\w*[aiou]\b')      # a, i, o, u 四個母音字母結尾的字
end_aiou=[True if re.match(ptn, w) else False for w in words]
print(end_aiou)
print(end_aiou.count(True))
if end_aiou.count(True) > 1:    # True 個數須不超過 1 個 才入選                      
    print('the permutation is excluded')       
else:      
    print('the permutation is included')     

沒有留言:

張貼留言