2016-10-23 9 views

答えて

3

一つの方法は、(それらの小文字と大文字種々の両方で)文字のデカルト積を生成することで、正確に3つの大文字がある場合、のみそれらを維持

from itertools import product 
def combs(s, n): 
    pairs = tuple(i.lower() + i.upper() for i in s) 
    for i in product(*pairs): 
     if sum(1 for j in i if j.isupper()) == n: 
      yield ''.join(i) 

for s in combs('abcde', 3): 
    print(s) 

出力

abCDE 
aBcDE 
aBCdE 
aBCDe 
AbcDE 
AbCdE 
AbCDe 
ABcdE 
ABcDe 
ABCde 
1
def f(s): 
    r = [] 
    for i in range(1, len(s)-1): 
     for j in range(i+1, len(s)): 
      r.append(s[:i].capitalize() + s[i:j].capitalize() + s[j:].capitalize()) 
    return r 
関連する問題