【发布时间】:2018-05-21 16:32:12
【问题描述】:
我正在关注这个:
if else in a list comprehension
但是下面的小程序产生了语法错误:
def to_rna(dnasequences):
xlate = {'G': 'C', 'C': 'G', 'T': 'A', 'A': 'U'}
return ''.join(xlate[sequence] for sequence in dnasequences if sequence in xlate.keys() else raise ValueError)
else 子句产生了错误。
但是,如果我删除它运行的 else 子句,我想为任何输入引发一个 ValueError 这不是我的字典“xlate”中的键。
注意我正在研究来自 exercism.io 的 rna 转录问题。
我通过了 5 个单元测试,但我没有通过三个单元测试,因为无效输入需要 ValueError。
【问题讨论】:
-
如果你不能让单线工作,这是一个很好的迹象,表明你试图做太多。只需编写一个普通循环即可。
-
如果你坚持内联,并且因为你不关心消息,而不是
raise ValueError声明只需放置int(""),它会为你提出一个ValueError。或者,您知道,放弃列表理解并解开循环以正确执行。
标签: python python-3.x if-statement valueerror