簡體   English   中英

如果否則引發ValueError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM