Python实现Pig Latin转换时星号表达式报语法错误如何解决
语法错误原因
return *[列表推导式]写法不符合Python语法规范:独立的星号解包表达式不能直接作为return的返回值,星号解包仅支持在容器构造、可迭代对象赋值、函数参数传递等场景下使用。
功能实现修正
你的代码除了语法错误外,还缺少标点判断逻辑,会错误转换标点符号。符合需求的实现代码如下:
def pig_it(text): return ' '.join(x[1:] + x[0] + 'ay' if x.isalpha() else x for x in text.split())
测试验证:
pig_it('Pig latin is cool')输出igPay atinlay siay oolcaypig_it('Hello world !')输出elloHay orldway !
星号解包的合法用法演示
如果你需要试验星号解包功能,以下是合法写法示例:
- 构造元组返回:
def pig_it(text): # 返回由转换后单词组成的元组 return (*(x[1:] + x[0] + 'ay' if x.isalpha() else x for x in text.split()), )
- 构造列表返回:
def pig_it(text): # 返回由转换后单词组成的列表 return [*(x[1:] + x[0] + 'ay' if x.isalpha() else x for x in text.split())]
内容的提问来源于stack exchange,提问作者Hrishi
相关产品推荐
相关产品推荐

