Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表理解中使用if-else语句时出现语法错误_Python_List Comprehension - Fatal编程技术网

Python 在列表理解中使用if-else语句时出现语法错误

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(

如果您正在进行代码战,但尚未完成简单的猪拉丁卡塔,请发出剧透警报

您在这里必须做的就是:

将每个单词的第一个字母移到它的末尾,然后在后面加上“ay” 单词的结尾。保留标点符号不变“

例如,输入“Pig latin is cool”时应返回“igPay atinlay siay oolcay”,输入“This is my string”时应返回“hisTay siay ymay tringsay”

我尝试了一个单行程序解决方案,但我的代码在运行时返回语法错误,我不知道为什么

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!