我试图写一些代码作为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)

08-26 22:06