如何解决以特定模式重复字符串而不进行切片
我正在处理一个非常烦人的Python任务,我迷路了。这些是要求:
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] 举报,一经查实,本站将立刻删除。