5

文字列を循環するプログラムを作成しようとしています。これは私がこれまでに持っているものです。

def main():
        name = "firstname lastname"

        for i in name:
            print(name)
            name = name[1::]
main()

これはちょうど私を与える

firstname lastname
irstname lastname
rstname lastname
stname lastname
tname lastname

など、最後の文字まで。

この種の私が望むことはできますが、完全ではありません。

このプログラムでやりたいことは、このようなものを印刷することです。

firstname lastname
irstname lastname f
rstname lastname fi
stname lastname fir
tname lastname firs
name lastname first
ame lastname firstn 
me lastname firstna

などなど....ストリングスを循環していますが、まったく理解できません。助けてください。

前もって感謝します

4

6 に答える 6

3

両端のキューを使用するのはどうですか。この種の専用の回転メソッドがあります。

from collections import deque
s = "firstname lastname"
d = deque(s)
for _ in s:
    print(''.join(d))
    d.rotate()

.rotate(-1)反対方向に回転させたい場合に使用できます。

于 2013-11-12T00:18:55.217 に答える
1
def main():
    name = "firstname lastname"

    for i in range(len(name)):
        print(name[i:] + name[:i])
main()

スライスは素晴らしいことです。:)

于 2013-11-12T00:18:32.063 に答える
0
>>> for i in range(len(name)):
...     print(name[i:] + " " + name[:i])
...
firstname lastname
irstname lastname f
rstname lastname fi
stname lastname fir
tname lastname firs
name lastname first
ame lastname firstn
me lastname firstna
e lastname firstnam
 lastname firstname
lastname firstname
astname firstname l
stname firstname la
tname firstname las
name firstname last
ame firstname lastn
me firstname lastna
e firstname lastnam
于 2013-11-12T00:18:40.100 に答える
0

これはうまくいくようです。配列スライスは文字列を回転しません。最初の文字を文字列に追加し直す必要があります。そうしないと、ループを繰り返すたびに短くなります。

配列のスライス表記を説明する投稿は次のとおりです: Python のスライス表記について説明します。

def main():
    name = "firstname lastname "

    for i in name:
        print(name)
        #name = name[1::]
        name = name[1:] + name[0]
main()
于 2013-11-12T00:18:58.907 に答える