【发布时间】:2020-09-16 19:35:59
【问题描述】:
问题:给定一个字符串和m和n。
输入1:原始字符串
输入 2:m(小于字符串长度):从字符串末尾剪切 m 个字母,然后添加到字符串开头。
输入3:n(小于字符串长度):从上面步骤中获得的字符串末尾剪切n个字母,然后添加到该字符串的开头。
此过程继续进行,需要找出返回原始字符串所需的转数。
def harry(str, m, n):
le = len(str)
org = str.upper()
str = str.upper()
turn = 0
for i in str:
str3 = str[-m:] # last n letters
str = str.replace(' ', '')[:-m]
str = str3 + str
print(str)
if org != str:
turn = turn + 1
str4 = str[-n:]
str = str.replace(' ', '')[:-n]
str= str4 + str
print(str)
turn = turn + 1
if org == str:
break
print(turn)
str = input("Enter the string")
m=int(input("Enter the value of m"))
n=int(input("Enter the value of n"))
harry(str, m, n)
获得的输出:
Enter the stringarya
Enter the value of m1
Enter the value of n2
AARY
RYAA
ARYA
2
要获得的原始输出:
3
(需要3个回合才能找回原始字符串Arya。)
除了这样的单词之外,我得到了所有单词的输出,尤其是当同一个字母连续出现时。 请帮我解决这个问题。
【问题讨论】:
-
你能给出失败的地方吗?
-
在第二次迭代中,原始字符串 arya 在 str 中获得,如果条件不增加 turn 即 turn 仅为 2,则直接进入第二次迭代,因为第二次迭代本身条件为真。(在第9步,2次迭代后得到str=arya时,不计同)。在不增加转弯的情况下,它会跳转到打印转弯。希望对您来说很清楚。我认为 for 循环条件不正确。
-
问题在于分配和增加转弯值。
-
如果有帮助,请始终通过接受答案来结束您的问题:)。