我正在尝试编写一些代码作为python的实践。用户输入字符串和作为字符串长度因数的数字后,输出应为字符串的反方向,分为与输入数字相等的段。我的问题是输出被缩短,我认为这是由于我的for循环的情况引起的。
def reverse_and_slice(string, k):
i=0
n=len(string)
j=0
revstring=string[::-1]
finalstring=''
for i in range(n//k):
finalstring+=revstring[j:(i+1)*k] + ' '
j+=(i+1)*k
i+=1
print(finalstring)
我正在尝试使用for循环来完成此操作。 123456789应该打印为987 654321。但是,当前正在打印为987 654,没有后三位数字。同样,只有两个长度为k的片段会缩短较长的输入。
答案 0 :(得分:1)
您的循环迭代正确的时间。您只需在循环中打印i
即可检查它。 j
有问题。在上一次迭代中,它等于9,因此revstring[9:9]
为空。这是由+
之前的=
引起的:j+=(i+1)*k
您在递增j
而不是更改值。
def reverse_and_slice(string, k):
i=0
n=len(string)
j=0
revstring=string[::-1]
finalstring=''
for i in range(n//k):
finalstring+=revstring[j:(i+1)*k] + ' '
j = (i+1)*k
i+=1 # this line is also not needed
print(finalstring)