For循环未迭代预期时间

时间:2019-06-04 08:11:10

标签: python string for-loop

我正在尝试编写一些代码作为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的片段会缩短较长的输入。

1 个答案:

答案 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)