簡體   English   中英

Python:通過函數使用int(變量)迭代字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM