Python:通过函数迭代带有int(变量)的字符串

时间:2017-05-18 10:55:36

标签: python python-3.x function iteration

我是一个绝对的初学者,已经阅读了许多相关主题,但我无法理解它。

我尝试创建一个函数,它完全迭代字符串s" n"次。

s="hello"
n=2

如果我只是输入

s[::n]

它确实有效,但是,如果我试图在一个函数中表达这一切,一切都会变得混乱。

我的功能如下:

def printEvery(s,n):
    for n in range(len(s)):
        print(s[::n])

ValueError:切片步长不能为零

我真的不明白为什么它不能在一个功能中工作,因为在我脑海里它只有这样才有意义。我非常感谢任何帮助。

E:对不起格式,感谢编辑 khelwood

3 个答案:

答案 0 :(得分:1)

def printEvery(s,n):
    for x in range(1, len(s) + 1):
        print(s[::n])
printEvery("Hello", 2)

不太确定为什么你需要这个呢

答案 1 :(得分:1)

正如我在评论中已经提到的,range从0开始,所以你不能切割字符串来返回每个第零个元素。

你的功能的另一个问题是参数" n"被for循环立即覆盖,因此无论您调用printEvery的第二个参数,它都将始终打印相同的文本。这相当于:

def printEvery(text):
    for stepsize in range(1, len(text)):
        print(text[::stepsize])

答案 2 :(得分:0)

def printEvery(text):
    for i in range(len(text)+1,1,-1):
        print (text[::i])

每个for循环从0开始

Range的指令是

range([start], stop[, step])

表示数字应该从哪里开始,然后何时停止以及应该经历多少步骤。

在这种情况下,它从11开始,因为我写了len(文本)+1,我认为len(文本)是10.我告诉Python当它达到1时停止,每次每次都是-1所以,如果你更换

print (text[::i])
#replace this line to this:
print i

这将打印出来:

11
10
9
8
7
6
5
4
3
2
1

我希望它适合你。我不是很擅长英语,对于我糟糕的英语很抱歉:)