문자열이 주어졌으며 하나 이상의 잘못된 문자가 있으면 False를 반환하고, 그렇지 않으면 True를 반환해야합니다. 주의해야 할 것은 내장 함수와 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'를 취합니까? 왜 그런지 모르지만, 당신이 * 어디서나 사용하는 것처럼 보이지 않기 때문입니다. 또한, 어디에도 '거짓'을 돌려 보내지 않는 것 같습니까? –
마지막으로, Python 코드에 대해 [Minimal, Complete, Verifiable Example] (http://stackoverflow.com/help/mcve)를 만들 때 코드가 * 들여 쓰기되어 있는지 확인하십시오! Python 들여 쓰기 문제를 기억하십시오. –
재귀에 종료 조건이 없습니다. len이 1이면 재귀가 끝나기 위해 뭔가를 반환해야합니다. – pvg