for文で、スライスを用いて、strの文字列から、1回目で先頭のPから最後のSまで10個、2回目で2番目のPから最後のSまで9個、のように取得したいのですが、以下のコードの何が悪いのかがわかりません。ご回答お願いします。
問題点は、paramateの変数を更新したいのも関わらず、更新することができずにいる点です。
#####これでできるのでは?と考えたコード
python3
1str = "PPPPWWWWSS" 2for i in range (2): 3 paramate = 0 4 for i in str[paramate:10]: 5 print(i) 6 paramate += 1
######実行結果
P
P
P
P
W
W
W
W
S
S
P
P
P
P
W
W
W
W
S
S
↑一回目も二回目も、10個の文字を取り出してしまっている。これが問題点。
#####上記のコードでできるのでは??と思った経緯
python3
1str = "PPPPWWWWSS" 2paramate = 0 3for i in str[paramate:10]: 4 print(i)
######実行結果1(paramate=0の時)
P
P
P
P
W
W
W
W
S
S
python3
1str = "PPPPWWWWSS" 2paramate = 1 3for i in str[paramate:10]: 4 print(i)
#####実行結果2(paramate=1の時)
P
P
P
W
W
W
W
S
S
下の二つのコードでは、paramateの値が更新可能であるため、一番上のコードでもこれが可能であると考えています。
何が問題なのでしょうか???ご指摘お願いします。
#####LouiS0616さんのアドバイスによる変更点
ご指摘に従ってparamateをループの外に出してみました。しかし、意図した動きになりません、、ここに何を足せば良いのでしょうか??
python3
1str = "PPPPWWWWSS" 2paramate = 0 3for i in range (2): 4 for i in str[paramate:10]: 5 print(i) 6 paramate += 1
#####実行結果
P
P
P
P
W
W
W
W
S
S
↑一回目のループしかできていない?状態っぽいのですが、、
回答3件
あなたの回答
tips
プレビュー