嗨,我正在自己學習 python。
任務:在不影響特殊字符的情況下反轉單詞
示例 "abcd efgh" => "dcba hgfe" 示例 "a1bcd efg!h" => "d1cba hgf!e"
我的問題:函式回傳 None
然后我添加了這一行:
return reverse_text但它仍然回傳 None
誰能告訴我我的錯誤在哪里?
我的代碼:
from string import punctuation
from string import digits
def reverse_text(str_smpl):
sp = set.union(set(punctuation), set(digits))
reverse_text.lst = []
for word in str_smpl.split(' '):
letters = [c for c in word if c not in sp]
for c in word:
if c not in sp:
reverse_text.lst.append(letters.pop())
continue
else:
reverse_text.lst.append(c)
reverse_text.lst.append(' ')
return reverse_text
if __name__ == '__main__':
cases = [
("abcd efgh", "dcba hgfe"),
("a1bcd efg!h", "d1cba hgf!e"),
("", "")
]
for text, reversed_text in cases:
assert reverse_text(str_smpl) == reversed_text
reverse_text(input('Input string '))
print("".join(reverse_text.lst))
uj5u.com熱心網友回復:
問題是您回傳的reverse_text是函式的名稱,因此該函式正在回傳對自身的參考(不是您想要的!)。
像你那樣為函式分配屬性reverse_text.lst并不是我在 Python 中真正遇到的事情,我建議你只使用一個名為 like 的新區域變數以reversed_text_list避免混淆。
我認為您還想將串列中的字符連接在一起并回傳一個字串。
以下似乎正在做我認為您正在嘗試做的事情:
def reverse_text(str_smpl):
sp = set.union(set(punctuation), set(digits))
reversed_text_list = []
for word in str_smpl.split(' '):
letters = [c for c in word if c not in sp]
for c in word:
if c not in sp:
reversed_text_list.append(letters.pop())
continue
else:
reversed_text_list.append(c)
reversed_text_list.append(' ')
reversed_text = ''.join(reversed_text_list)
return reversed_text
uj5u.com熱心網友回復:
它回傳錯誤,因為您已定義reverse_text.lst但僅回傳reverse_text,以下代碼將起作用:-
from string import punctuation
from string import digits
def reverse_text(str_smpl):
sp = set.union(set(punctuation), set(digits))
lst = []
for word in str_smpl.split(' '):
letters = [c for c in word if c not in sp]
for c in word:
if c not in sp:
lst.append(letters.pop())
continue
else:
lst.append(c)
lst.append(' ')
return "".join(lst[:len(lst)-1])
if __name__ == '__main__':
cases = [
("abcd efgh", "dcba hgfe"),
("a1bcd efg!h", "d1cba hgf!e"),
("", "")
]
for text, reversed_text in cases:
assert reverse_text(text) == reversed_text
print(reverse_text(input('Input string ')))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/401173.html
上一篇:使字串相等所需的最小切片數
