我试图写一些代码作为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的段会截断较长的输入。
最佳答案
您的循环迭代正确的时间。您只需在循环中打印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)