我是一个绝对的初学者,已经阅读了许多相关主题,但我无法理解它。
我尝试创建一个函数,它完全迭代字符串s" n"次。
s="hello"
n=2
如果我只是输入
s[::n]
它确实有效,但是,如果我试图在一个函数中表达这一切,一切都会变得混乱。
我的功能如下:
def printEvery(s,n):
for n in range(len(s)):
print(s[::n])
ValueError:切片步长不能为零
我真的不明白为什么它不能在一个功能中工作,因为在我脑海里它只有这样才有意义。我非常感谢任何帮助。
E:对不起格式,感谢编辑 khelwood !
答案 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
我希望它适合你。我不是很擅长英语,对于我糟糕的英语很抱歉:)