【发布时间】:2021-12-28 13:12:55
【问题描述】:
您好,我正在自学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))
【问题讨论】:
-
注入列表并不是那么 Pythonic。尝试返回重新排序的列表
return reverse_text.lst -
为什么
reverse_text在返回之前要给自己附加一个列表,而不是仅仅返回一个列表? -
reverse_text.lst的目的是什么? -
一个提示是你的函数不会返回
None--- 它会返回自己。
标签: python python-3.x string function reverse