文字列が与えられ、無効な文字が1つ以上ある場合はFalseを返す必要があります。注意点は、組み込み関数とstr操作(たとえば、in、+、indexing、len)と再帰のみが可能なことです。私は、これまで機能していない持っているもの:文字列内の有効な文字
def is_valid_sequence(dna):
""" (str) -> bool
Return True if and only if the DNA sequence is valid
(A, T, C, and G)
:param dna: string sequence
:return: true or false
>>> is_valid_sequence('ATTAC')
True
>>> is_valid_sequence('FBSSS')
False
"""
valid_seq = 0
if len(dna) == 1 and dna in ['A', 'T', 'C', 'G']:
valid_seq += 1
else:
return is_valid_sequence(dna[1:])
を明らかに、このコードがあるため、再帰の仕事とちょうど次の再帰的な繰り返しの後に拭いますvalid_seq
変数に1を加算しません。
代わりにラムダの上記のプログラムに同じように動作しますが、昔ながらの機能を使用していますその関数に 'valid_seq'を引数として渡しますか?理由を知っているわけではありません。なぜなら、どこにでも*使用するように見えないからです。また、あなたはどこでも 'False'を返すようには見えませんか? –
最後に、Pythonコードの[Minimal、Complete、Verifiable Example](http://stackoverflow.com/help/mcve)を作成するときは、コードが正しくインデントされていることを確認してください! Pythonインデントの問題を覚えておいてください。 –
再帰には終了条件がありません。 lenが1の場合、再帰が終了するように何かを返す必要があります。 – pvg