作為序言,因為我正在學習使用 while 回圈,所以我想只用 if 陳述句、in 陳述句和 while 回圈來撰寫這個函式。我想我可能還需要使用break 或 continue。我不想使用 for 回圈或串列理解形式。
函式本身應該看起來像take_last(lst)
它通常應該接受一個單詞串列并回傳串列中的最后一個值,并洗掉它的第一個和最后一個字符。
例如,
take_last[“Fish”, “Meat”, “Fruit”, “Cake”]
將回傳“ak”,因為這是串列中洗掉字符“C”和“e”的最后一個單詞。這部分功能比較簡單。我認為可以做到
return (lst[-1])[slice(1,-1)]
但是,它受制于兩個不同的條件,這可能會使撰寫函式變得困難。
- 如果串列中的名字少于 3 個字符,函式將停止并回傳“finished”
即將take_list([“SH”, “Meat”])停在“SH”并回傳“finished”。
- 否則,如果不滿足此條件并且第一個單詞有 3 個或更多字符,則該函式將繼續遍歷串列,直到找到另一個少于 3 個字符的單詞。然后它將在這一點停止并回傳串列中的前一個字符,其中第一個和最后一個字符被洗掉。
即,如果輸入是take_last([“Fish”, “Meat”, “Fruit”, “SH”, “Cake”])函式在“SH”處中斷,而是“rui”回傳。(沒有'F的水果
我在嘗試什么
雖然我不確定如何構造 while 回圈,但我已經撰寫了第一個條件已經滿足的函式。
def take_last(lst):
if len(lst[0]) < 3:
return "finished"
else:
return (lst[-1])[slice(1,-1)]
take_last([“Fish”, “Meat”, “Fruit”, “Cake”])將回傳“ake”
并將take_last([“Fi”, “Meat”, “Fruit”, “Cake”])回傳
“finished”
I know that somewhere in my function I will need an elif statement followed by a while loop but I’m not sure how this would look. Any help would be appreciated.
uj5u.com熱心網友回復:
這是一個簡單的方法。
def take_last(lst):
i = 0
while i < len(lst) and len(lst[i]) >= 3:
i = 1
if i == 0:
return "finished"
else:
return lst[i-1][1:-1]
while只要索引處的字串i至少有 3 個字符長,回圈就會重復。所以當它完成后,i包含第一個短字串的索引;如果沒有短元素,它將包含串列的長度。
如果第一個字串很短,i將會是0,所以它之前沒有元素,我們回傳finished。
否則我們回傳之前元素的切片i。當沒有短元素時,這將是最后一個元素。
uj5u.com熱心網友回復:
因此,回傳洗掉第一個和第三個字符的最后一個單詞是我們能做的最后一件事。在此之前可能存在可能導致該功能提前停止的條件。
所以,現在我們知道什么成為我們的默認回報
return (lst[-1])[slice(1,-1)]
同樣,您檢查的第一個條件也是正確的。這樣就修復了我們的開始 if。
if len(lst[0]) < 3:
return "finished"
else現在是條件 2。我們可以在子句中解決這個問題。我們需要遍歷串列以查找少于 3 個字符的單詞。如果我們找到它,我們會在 truncation 之后回傳它之前的元素。
else:
i = 1
while (i < len(lst)):
if len(lst[i]) < 3:
return (lst[i-1])[slice(1,-1)]
i = 1
一切都放在一起:
def take_last(lst):
if len(lst[0]) < 3:
return "finished"
else:
i = 1
while (i < len(lst)):
if len(lst[i]) < 3:
return (lst[i-1])[slice(1,-1)]
i = 1
return (lst[-1])[slice(1,-1)]
uj5u.com熱心網友回復:
您可以使用常規for回圈輕松地做到這一點,在我看來,這比使用回圈更自然while:
def take_last(lst):
prev = None
for val in lst:
if len(val) < 3:
break
prev = val
if prev is None:
return "finished"
else:
return prev[1:-1]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457210.html
標籤:python function if-statement while-loop
上一篇:執行10秒后中斷while回圈
下一篇:撰寫一個函式來計算r中的CAGR
