首页 > 解决方案 > 如何将字符串向右移动 n 个字符

问题描述

我正在练习编码,并在互联网上找到了这个练习:

两行分别输入一个字符串s和一个整数n,定义一个函数,将字符串s向右移动n位,当n为负数时向左移动。

如果 s 是空字符串 '',则输出 '' 而不管 n。

样本输入:

s ='123456'
n=3

样本输出:

Output result: 456123

到目前为止,我这样做了:

def shiftall(s, n, left, right):
    while left <= right:

        if s[left] < 0 and s[right] < 0:
            left += n


        elif s[left] > 0 and s[right] < 0:
            s[left], s[right] = \
                s[right], s[left]
            left += n
            right -= n


        elif s[left] > 0 and s[right] > 0:
            right -= n
        else:
            left += n
            right -= n


def display(s):
    for i in range(len(s)):
        print(s[i], end=" ")
    print()


if __name__ == "__main__":
    s = str(input('s='))
    n = int(input('n='))
    shiftall(s, 0, n - 1)
    display(s)

但是出现错误并且无法解决:

Traceback (most recent call last):
  File "C:\Users\User\PycharmProjects\pythonProject\main.py", line 31, in <module>
    shiftall(s, 0, n - 1)
TypeError: shiftall() missing 1 required positional argument: 'right'

有什么建议么?编辑错误输出*

标签: python

解决方案


它是__name__和不是name

你也可以这样做:

s = s[n:] + s[:n]

移动字符串。


推荐阅读