2017-03-15 3 views
3

こんにちは私は、エンハンスメント(これはすでに作られた単語を変更する)を使用して、指定された数nの部分に新しい単語を印刷する関数を作りたいと考えています。私は(「## tの」、「#te」、「TES」、「EST」、「目の%」、「トン%%」)部分的に単語を印刷する

def enhance(S,n): 
    S = "#"*(n-1)+S+"%"*(n-1) 
    return S 

def exploder(S,n): 
    S = enhance(S,n) 
    x=0 
    for i in range (n <= len(S)): 
     print(S[x:i]) 
     x=x+1 


S="test" 
n = 3 
for n in range (0,n): 
    print(exploder(S,n)) 
    n=n+1 
print(exploder(S,n)) 
+0

質問ありますか? – Dmitry

+0

類似したもの:http://stackoverflow.com/questions/8408117/generate-a-list-of-strings-with-a-sliding-window-using-itertools-yield-and-ite –

答えて

2

一つの即時修正を取得する必要がありますS =テストの例。代わりに:

for i in range (n <= len(S)): 

私は、あなたがしたいと思う:範囲n <= i < len(s)であなたに私の値を与える

for i in range(n, len(S) + 1): 

。アレックス・ホールは、変更を示唆したとしても

、:

print(exploder(S,n)) 

はちょうどするには、次の

exploder(S,n) 

エクスプローダ機能はなしを返していませんでした。そのプリントはあなたの偽りのソースですなし出力。

+0

これは動作しますが、もう1つは印刷されません。申し訳ありませんが、私はPythonを初めて使っています – Alex

+1

@Alexは 'exploder'を呼び出すだけです。何も返されないものを出力しているので、' print'しないでください。 'exploder'は単独で印刷します。 –

+0

@Alexは、コードの2番目の問題を正しく特定しました。 print(exploder(S、n))は、 '' None''の出力がどこから来ているかを示します。 –

1
def enhance(S, n): 
    S = "#" * (n - 1) + S + "%" * (n - 1) 
    return S 

def exploder(S, n): 
    S = enhance(S, n) 
    for i in range(len(S)-n+1): 
     print(S[i:i+n]) 

S = "test" 
n = 3 
exploder(S, n) 

出力:

##t 
#te 
tes 
est 
st% 
t%% 
+0

しかし、この方法では、最後のものを印刷しません。 – Alex

+0

@Alexおっと、気づかなかった。私は[編集](http://stackoverflow.com/posts/42805509/revisions)のように、 'i'の範囲に1つ追加するだけです。 –

関連する問題