Python 在列表理解中使用if-else语句时出现语法错误
如果您正在进行代码战,但尚未完成简单的猪拉丁卡塔,请发出剧透警报 您在这里必须做的就是: 将每个单词的第一个字母移到它的末尾,然后在后面加上“ay” 单词的结尾。保留标点符号不变“ 例如,输入“Pig latin is cool”时应返回“igPay atinlay siay oolcay”,输入“This is my string”时应返回“hisTay siay ymay tringsay” 我尝试了一个单行程序解决方案,但我的代码在运行时返回语法错误,我不知道为什么Python 在列表理解中使用if-else语句时出现语法错误,python,list-comprehension,Python,List Comprehension,如果您正在进行代码战,但尚未完成简单的猪拉丁卡塔,请发出剧透警报 您在这里必须做的就是: 将每个单词的第一个字母移到它的末尾,然后在后面加上“ay” 单词的结尾。保留标点符号不变“ 例如,输入“Pig latin is cool”时应返回“igPay atinlay siay oolcay”,输入“This is my string”时应返回“hisTay siay ymay tringsay” 我尝试了一个单行程序解决方案,但我的代码在运行时返回语法错误,我不知道为什么 def pig_it(
def pig_it(text):
return ' '.join([word[1:] + word[0] + 'ay' for word in text.split() if word not in ',!?' else word])
问题在于else-word
,我的代码根本没有生成,为什么这个else语句会导致问题
我的代码在如下情况下运行良好
def pig_it(text):
return ' '.join([word[1:] + word[0] + 'ay' for word in text.split() if word not in ',!?'])
但它并不能解决所有的测试问题(只要有逗号、问号或感叹号)
word[1:][word[0]+“ay”如果word不在“,!?”中,否则word
这是一个条件表达式,也称为三元运算符和
在列表中,必须将表达式放在for循环语句的左侧,将if条件放在for循环语句的右侧
return " ".join(
[word[1:] + word[0] + "ay" if word not in ",!?" else word for word in text.split()]
)
这是你想要的输出吗?如果是,由于需要保持点状不变,因此必须为单词[0]和单词[-1]添加更多if-else语句(如果它们位于“,?!”中),然后将函数传递给单词[1]和单词[-2]。我所做的只是一个演示
?hello, orld!way
el?lo,hay ?world!
请添加示例输入和您看到的错误;读者不能总是猜测代码是如何被破坏的。顺便说一句,
['.join([word[1],word[0],'ay'])如果word…
表示感谢,它现在就可以工作了
?hello, orld!way
el?lo,hay ?world!