[英]Python: Iterating a string with an int(variable) through a function
我是一個絕對的初學者,已經閱讀了許多相關的主題,但是我只是無法解決。
我嘗試創建一個對字符串s進行精確“ n”次迭代的函數。
s="hello"
n=2
如果我只是輸入
s[::n]
它確實起作用,但是,如果我嘗試在一個函數中表達這一點,一切都會變得很麻煩。
我的函數如下所示:
def printEvery(s,n):
for n in range(len(s)):
print(s[::n])
ValueError:切片步不能為零
我真的不明白為什么它不能在函數中起作用,因為在我看來只有這樣才有意義。 非常感謝您的幫助。
E:對不起,格式,謝謝您對khelwood的編輯!
def printEvery(s,n):
for x in range(1, len(s) + 1):
print(s[::n])
printEvery("Hello", 2)
不太確定為什么您會需要這個
正如我在評論中已經提到的, range
從0開始,因此您無法對字符串進行切片以返回每個第零個元素。
函數的另一個問題是,參數“ n”會立即被for
循環覆蓋,因此無論您使用第二個printEvery
調用printEvery
,它將始終輸出相同的文本。 這等效於:
def printEvery(text):
for stepsize in range(1, len(text)):
print(text[::stepsize])
def printEvery(text):
for i in range(len(text)+1,1,-1):
print (text[::i])
每個for循環從0開始
范圍的指令是
range([start], stop[, step])
其中表示該數字應從何處開始,然后何時應停止以及應經歷多少步。
在這種情況下,它從11開始,因為我寫len(text)+1並假設len(text)為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
我希望這個對你有用。 我不太會說英語,所以對我的英語不好深感抱歉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.