Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def est_voyelle(c):
- """ str -> bool
- Hypothèse : len(c) == 1
- retourne True si et seulement si c est une voyelle
- minuscule ou majuscule. """
- return (c == 'a') or (c == 'A') \
- or (c == 'e') or (c == 'E') \
- or (c == 'i') or (c == 'I') \
- or (c == 'o') or (c == 'O') \
- or (c == 'u') or (c == 'U') \
- or (c == 'y') or (c == 'Y')
- # Jeu de tests
- assert est_voyelle('a') == True
- assert est_voyelle('E') == True
- assert est_voyelle('b') == False
- assert est_voyelle('y') == True
- assert est_voyelle('z') == False
- #Q1
- def nb_voyelles(s):
- """str -> int
- retourne le nombre de voyelles dans la chaine s"""
- #cpt:int
- cpt = 0
- #d:str
- for d in s:
- if est_voyelle(d):
- cpt=cpt+1
- return cpt
- assert nb_voyelles('mr brrxcx')==0
- assert nb_voyelles('la maman du petit enfant le console')==12
- assert nb_voyelles('ai al o ents')==5
- #Q2:
- def nb_voyelles_accents(s):
- """str -> int
- retourne le nombre de voyelles dans la chaine s"""
- #cpt:int
- cpt = 0
- #d:str
- for d in s:
- if est_voyelle(d) or d=="à" or d=="â" or d=="é" or d=="è" or d=="ê" or d=="î" or d=="ï" or d=="ô":
- cpt=cpt+1
- return cpt
- assert nb_voyelles_accents('la maman du bébé le réconforte')==11
- #Q3:
- def sans_voyelle(s):
- """str -> str
- retourne la chaine s sans voyelle"""
- #r:str
- r=""
- #d:str
- for d in s:
- if not(est_voyelle(d)):
- r=r+d
- return r
- assert sans_voyelle('aeiouy')==''
- assert sans_voyelle('la balle au bond rebondit')=='l bll bnd rbndt'
- assert sans_voyelle('mr brrxcx')=='mr brrxcx'
- #Q4:
- def mot_mystere(s):
- """str -> str
- remplace les voyelles par des _"""
- #r:str
- r=''
- #d:str
- for d in s:
- if not est_voyelle(d):
- r=r+d
- else:
- r=r+'_'
- return r
- assert mot_mystere('aeiouy')=='______'
- assert mot_mystere('la balle au bond rebondit bien')=='l_ b_ll_ __ b_nd r_b_nd_t b__n'
- assert mot_mystere('mr brrxcx')=='mr brrxcx'
- #5.6
- def base_comp(a):
- """str->str
- retourne la base complémentaire"""
- if a=='A' :
- return 'T'
- elif a=='T' :
- return 'A'
- elif a=='G' :
- return 'C'
- elif a=='C' :
- return 'G'
- #jeu de test
- assert base_comp('A')=='T'
- def brin_comp(b):
- """str->str
- renvoie le brin d'ADN complémentaire"""
- #s:str
- s=''
- #i:str
- for i in b :
- s=s+base_comp(i)
- return s
- #jeu de test
- assert brin_comp('AT')=='TA'
- def test_comp(c,d):
- """str*str->bool
- len(c)==len(d)
- retourne true si les deux brins sont complémentaires et False sinon"""
- #i:str
- for i in d:
- if c==brin_comp(i):
- return True
- elif c!=brin_comp(i):
- return False
- #jeu de test
- assert test_comp('ATCG','TAAG')== False
- def test_sous_sequence(b1,b2):
- """str*str->bool
- retourn true si b1 est une sous sequence de b2 et false sinon"""
- #s:str
- s=''
- #i:int
- for i in range(0,len(b2)-1):
- if b1==s[i:len(b2)]:
- return False
- return True
- #jeu de test
- assert test_sous_sequence('GC','ATGC')==True
- assert test_sous_sequence('','ATGC')==False
- #EXERCICE 5.9
- def moins_lettre(c, a):
- """str * str -> str + NoneType
- Hypothèse : len(c) == 1
- Retourne la chaîne s privée de la première occurrence du caractère c."""
- # premiere_trouvee : bool
- premiere_trouvee = False
- # res : str
- res = ''
- # d : str
- for d in a:
- if d != c:
- res = res + d
- elif not premiere_trouvee:
- premiere_trouvee = True
- else:
- res = res + d
- if res==a:
- return None
- return res
- assert moins_lettre('t', 'mangera') == None
- assert moins_lettre('a', 'mangera') == 'mngera'
- #Fonctionne en python "normal" ou dans le mode "expert" de MrPython:
- def anagramme_pythonnormal(m1,m2):
- """str*str -> bool
- retourne True si m1 est un anagramme de m2, False sinon"""
- #c1:list[str]
- c1 = sorted(m1)
- #c2:list[str]
- c2 = sorted(m2)
- if c1 == c2:
- return True
- else:
- return False
- def anagramme(m1,m2):
- """str*str -> bool
- retourne True si m1 est un anagramme de m2, False sinon"""
- #d:str
- for d in m2:
- print(moins_lettre(d,m2))
- if moins_lettre(d,m1)!=None:
- return False
- else:
- return True
- def anagramme(m1,m2):
- """str*str -> bool
- retourne True si m1 est un anagramme de m2, False sinon"""
- #i:int
- for i in range (0,len(m1)):
- if moins_lettre(m1[i],m2)==None:
- return False
- else:
- return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement