Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.86 KB | None | 0 0
  1. def est_voyelle(c):
  2.     """ str -> bool
  3.        Hypothèse : len(c) == 1
  4.        retourne True si et seulement si c est une voyelle
  5.             minuscule ou majuscule. """
  6.    
  7.     return (c == 'a') or (c == 'A') \
  8.         or (c == 'e') or (c == 'E') \
  9.         or (c == 'i') or (c == 'I') \
  10.         or (c == 'o') or (c == 'O') \
  11.         or (c == 'u') or (c == 'U') \
  12.         or (c == 'y') or (c == 'Y')
  13.        
  14. # Jeu de tests
  15. assert est_voyelle('a') == True
  16. assert est_voyelle('E') == True
  17. assert est_voyelle('b') == False
  18. assert est_voyelle('y') == True
  19. assert est_voyelle('z') == False
  20. #Q1
  21. def nb_voyelles(s):
  22.     """str -> int
  23.    retourne le nombre de voyelles dans la chaine s"""
  24.     #cpt:int
  25.     cpt = 0
  26.     #d:str
  27.     for d in s:
  28.         if est_voyelle(d):
  29.             cpt=cpt+1
  30.     return cpt
  31.  
  32. assert nb_voyelles('mr brrxcx')==0
  33. assert nb_voyelles('la maman du petit enfant le console')==12
  34. assert nb_voyelles('ai al o ents')==5
  35.  
  36. #Q2:
  37. def nb_voyelles_accents(s):
  38.     """str -> int
  39.    retourne le nombre de voyelles dans la chaine s"""
  40.     #cpt:int
  41.     cpt = 0
  42.     #d:str
  43.     for d in s:
  44.         if est_voyelle(d) or d=="à" or d=="â" or d=="é" or d=="è" or d=="ê" or d=="î" or d=="ï" or d=="ô":
  45.             cpt=cpt+1
  46.     return cpt
  47.  
  48. assert nb_voyelles_accents('la maman du bébé le réconforte')==11
  49.  
  50. #Q3:
  51. def sans_voyelle(s):
  52.     """str -> str
  53.    retourne la chaine s sans voyelle"""
  54.     #r:str
  55.     r=""
  56.     #d:str
  57.     for d in s:
  58.         if not(est_voyelle(d)):
  59.             r=r+d
  60.     return r
  61.  
  62. assert sans_voyelle('aeiouy')==''
  63. assert sans_voyelle('la balle au bond rebondit')=='l bll  bnd rbndt'
  64. assert sans_voyelle('mr brrxcx')=='mr brrxcx'
  65.  
  66. #Q4:
  67. def mot_mystere(s):
  68.     """str -> str
  69.    remplace les voyelles par des _"""
  70.     #r:str
  71.     r=''
  72.     #d:str
  73.     for d in s:
  74.         if not est_voyelle(d):
  75.             r=r+d
  76.         else:
  77.             r=r+'_'
  78.     return r
  79.  
  80. assert mot_mystere('aeiouy')=='______'
  81. assert mot_mystere('la balle au bond rebondit bien')=='l_ b_ll_ __ b_nd r_b_nd_t b__n'
  82. assert mot_mystere('mr brrxcx')=='mr brrxcx'
  83.  
  84.  
  85. #5.6
  86. def base_comp(a):
  87.     """str->str
  88.    retourne la base complémentaire"""
  89.     if a=='A' :
  90.         return 'T'
  91.     elif a=='T' :
  92.         return 'A'
  93.     elif a=='G' :
  94.         return 'C'
  95.     elif a=='C' :
  96.         return 'G'
  97. #jeu de test
  98. assert base_comp('A')=='T'
  99.  
  100.  
  101. def brin_comp(b):
  102.     """str->str
  103.    renvoie le brin d'ADN complémentaire"""
  104.     #s:str
  105.     s=''
  106.     #i:str
  107.     for i in b :
  108.         s=s+base_comp(i)
  109.     return s
  110.  
  111. #jeu de test
  112. assert brin_comp('AT')=='TA'
  113.  
  114. def test_comp(c,d):
  115.     """str*str->bool
  116.    len(c)==len(d)
  117.    retourne true si les deux brins sont complémentaires et False sinon"""
  118.     #i:str
  119.     for i in d:
  120.         if c==brin_comp(i):
  121.             return True
  122.         elif c!=brin_comp(i):
  123.             return False
  124. #jeu de test
  125. assert test_comp('ATCG','TAAG')== False
  126.  
  127. def test_sous_sequence(b1,b2):
  128.     """str*str->bool
  129.    retourn true si b1 est une sous sequence de b2 et false sinon"""
  130.     #s:str
  131.     s=''
  132.     #i:int
  133.     for i in range(0,len(b2)-1):
  134.         if b1==s[i:len(b2)]:
  135.             return False
  136.         return True
  137.  
  138. #jeu de test
  139. assert test_sous_sequence('GC','ATGC')==True
  140. assert test_sous_sequence('','ATGC')==False
  141.  
  142. #EXERCICE 5.9
  143. def moins_lettre(c, a):
  144.     """str * str -> str + NoneType
  145.    Hypothèse : len(c) == 1
  146.    Retourne la chaîne s privée de la première occurrence du caractère c."""
  147.     # premiere_trouvee : bool
  148.     premiere_trouvee = False
  149.     # res : str
  150.     res = ''
  151.     # d : str
  152.     for d in a:
  153.         if d != c:
  154.             res = res + d
  155.         elif not premiere_trouvee:
  156.             premiere_trouvee = True
  157.         else:
  158.             res = res + d
  159.     if res==a:
  160.         return None
  161.     return res
  162.    
  163.      
  164. assert moins_lettre('t', 'mangera') == None
  165. assert moins_lettre('a', 'mangera') == 'mngera'
  166.  
  167.  
  168. #Fonctionne en python "normal" ou dans le mode "expert" de MrPython:
  169. def anagramme_pythonnormal(m1,m2):
  170.     """str*str -> bool
  171.    retourne True si m1 est un anagramme de m2, False sinon"""
  172.     #c1:list[str]
  173.     c1 = sorted(m1)
  174.     #c2:list[str]
  175.     c2 = sorted(m2)
  176.  
  177.     if c1 == c2:
  178.         return True
  179.     else:
  180.         return False
  181.    
  182.    
  183.  
  184.  
  185. def anagramme(m1,m2):
  186.     """str*str -> bool
  187.    retourne True si m1 est un anagramme de m2, False sinon"""
  188.     #d:str
  189.     for d in m2:
  190.         print(moins_lettre(d,m2))
  191.         if moins_lettre(d,m1)!=None:
  192.             return False
  193.         else:
  194.             return True
  195.  
  196.  
  197. def anagramme(m1,m2):
  198.     """str*str -> bool
  199.    retourne True si m1 est un anagramme de m2, False sinon"""
  200.     #i:int
  201.     for i in range (0,len(m1)):
  202.         if moins_lettre(m1[i],m2)==None:
  203.             return False
  204.         else:
  205.             return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement