if else引发ValueError

时间:2017-12-07 14:26:30

标签: python python-3.x if-statement valueerror

我跟着这个:

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。

1 个答案:

答案 0 :(得分:3)

你不能理解这一点。条件表达式的格式为:

expr if expr else expr

(并且,注意,它应该在理解的开头使用)

虽然raise ExceptionClass is a statement,但不是表达式。因此,SyntaxError被提升。

简而言之,如果您确实想使用raise,则必须使用for循环。

或者,如果您对理解非常热衷,可以定义一个函数,然后可以在else子句中调用:

def raiser(exc_type):
    raise exc_type

这是因为函数调用是表达式。当然,这很难看。