微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以特定模式重复字符串而不进行切片

如何解决以特定模式重复字符串而不进行切片

我正在处理一个非常烦人的Python任务,我迷路了。这些是要求:

  • 要求输入。
  • 对于保存的字符串中的每个字符,我需要进行一些修改输出所述字符串。例如,如果输入为abcd,则输出如下所示:
abcd
bcda
cdab
dabc

即有len(input)行,每行以下一个input[i]字符开始,并重复到原始输入的长度。

  • 我不应该使用切片,这是循环练习(T_T)。没有功能或软件包。仅循环。

我制作了一个工作脚本,如下所示:

w = input('Type a word:')
w2 = ''

for i,char in enumerate(w):
    w2 = w[i:]+w[:i]
    print(w2)

简洁明了。但是它将被标记为切片。 Python循环专家可以帮助我将其重新制作成循环吗?提前非常感谢!

解决方法

如果无法切片字符串,则可以追加和弹出列表。因此,将字符串转换为列表并使用列表方法。

>>> test = "abcd"
>>> l = list(test)
>>> for _ in range(len(l)):
...     print("".join(l))
...     l.append(l.pop(0))
... 
abcd
bcda
cdab
dabc
,

您可以使用自身的模数来索引到原始字符串:

w = "aword" 
lw = len(w)

for offset in range(lw):
    for character in range(lw):
        print(w[(offset+character) % lw],end="")
    print()

输出:

aword
worda
ordaw
rdawo
dawor

如果偏移量和字符的总和超过字符数量,则模运算会将其环绕。

,

只是为了娱乐另一个:

s = 'aword'
ss = s * 2  # 'awordaword'
for i in range(len(s)):
    for j in range(len(s)):
        print(ss[i+j],end='')
    print()

输出:

aword
worda
ordaw
rdawo
dawor

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。