[英]if else to raise a ValueError
我正在關注:
但是以下小程序正在生成語法錯誤:
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子句,它將運行,我想為我的字典“ xlate”中不是鍵的任何輸入引發ValueError。
注意我正在研究exercism.io的rna轉錄問題。
我通過了5項單元測試,但我的三項單元測試均未通過,要求ValueError進行無效輸入。
您無法理解這一點。 條件表達式的形式為:
expr if expr else expr
(並且,子注釋應該在理解的開頭使用)
而raise ExceptionClass
是一個語句 ,而不是一個表達式。 因此,引發了SyntaxError
。
簡而言之,如果您確實想使用raise
,則必須訴諸for
循環。
或者,如果您只對理解充滿熱情,則可以定義一個函數,然后可以在else
子句中調用它:
def raiser(exc_type):
raise exc_type
這是因為函數調用是表達式。 當然,這很丑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.