Compréhension et correction
Bonjour,
Je suis un étudiant et je début en python et j aimerait avoir votre aide
Écrire une fonction
Voici mon code
Les ligne fail ne passent. Puis-je avoir une correction de mon code ou pouvez-vous m'indiquer je me suis trompé ?
Je suis un étudiant et je début en python et j aimerait avoir votre aide
Écrire une fonction
est_adnqui reçoit une chaîne de caractères en paramètre et qui retourne
Truesi cette chaîne de caractères n'est pas vide et peut représenter un brin d’ADN,
Falsesinon
Voici mon code
def est_adn(s): if s not in "ACGT": return False elif s == "": return False else: return True
ok L'entête de la fonction est_adn est correctement défini
ok Bon résultat pour est_adn('tT') : False
fail Résultat attendu pour est_adn('ATGTATTGCGT') : True
ok Bon résultat pour est_adn('gTxatgAGggytG') : False
ok Bon résultat pour est_adn('czazxygccgaTACxG') : False
ok Bon résultat pour est_adn('') : False
ok Bon résultat pour est_adn('CgGCCt') : False
ok Bon résultat pour est_adn('yxgtzzCayyytAA') : False
fail Résultat attendu pour est_adn('TGTG') : True
fail Résultat attendu pour est_adn('TGGTTC') : True
fail Résultat attendu pour est_adn('AGGAA') : True
Les ligne fail ne passent. Puis-je avoir une correction de mon code ou pouvez-vous m'indiquer je me suis trompé ?
A voir également:
- Compréhension et correction
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Activer correction automatique android - Guide
- Telecharger clavier français avec correction - Télécharger - Divers Utilitaires
- Le correcteur automatique de votre smartphone vous rend fou ? Voici comment le désactiver - Accueil - Mobile
- Mode correction word - Guide
3 réponses
Bonjour
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
Bonjour,
Ton code teste si la sous-chaîne "ACTG" apparaît dans le brin d'ADN, alors que je suppose que le test que tu souhaites effectuer, c'est si chacun des caractères si le brin d'ADN n'implique que les caractères A, C, T, G.
Quatre manières de résoudre ton problème :
Bonne chance
Ton code teste si la sous-chaîne "ACTG" apparaît dans le brin d'ADN, alors que je suppose que le test que tu souhaites effectuer, c'est si chacun des caractères si le brin d'ADN n'implique que les caractères A, C, T, G.
Quatre manières de résoudre ton problème :
- soit tu itères sur chaque caractère et tu vérifie si le caractère courant apparaît dans "ACTG" (ou mieux, dans l'ensemble
{A, C, T, G}
)
def est_adn(s): if not s: return False for a in s: if a not in {'A', 'C', 'T', 'G'}: return False return True
- ce qui peut se réécrire
all
:
def est_adn(s): return s and all( a in {'A', 'C', 'T', 'G'} for a in s )
- soit tu convertis la chaîne qui contient le brin d'ADN en ensemble (
set(s)
) et tu vérifies si cet ensemble est inclu ou égal à l'ensemble{A, C, T, G}
.
def est_adn(s): return s and set(s) <= {'A', 'C', 'T', 'G'}
- soit tu utilises une expression rationnelle (c'est plus général, mais vu la simplicité du test, mais c'est l'occasion d'ajouter cette corde à ton arc pour des tests plus évolués que tu seras amené(e) à faire à l'avenir).
import re RE_ADN = re.compile(r"[ACTG]+") def est_adn(s): return bool(RE_ADN.match(s))
Bonne chance
Merci beaucoup mamiemando pour cette explication. Comme je suis un étudiant débutant, j'aimerais beaucoup échanger avec vous c'est possible et apprendre auprès de vous en suivant vos conseils.