# -*- coding: utf-8 -*-
"""
TP3 : Chaines de caractères et tuples

PCSI2 - Albert Schweitzer - Le Raincy
"""

##Q3
def rechercheSousChaine(chaine:str, motif:str) -> int:
    '''
    Renvoie -1 si motif n'apparait pas dans chaine
    et l'indice de la première lettre de motif dans
    chaine à sa première apparition sinon
    '''
    for i in range(len(chaine)- len(motif)+1):
        if chaine[i:i+len(motif)] == motif:
            return i
    return -1 #On n'a pas trouvé le motif

##Q4
def carre(n:int) -> None:
    '''
    Affiche un carré de * de taille n
    '''
    for i in range(n):
        print(n*'*')
##Q5
def pyramide(n:int) -> None:
    '''
    Affiche une pyramide de * de taille n
    '''
    for i in range(n):
        print((n-i-1)*' '+ (2*i+1)*'*' + (n-i-1)*' ')
##Q6
def identiques(t:tuple) -> bool:
    '''
    Renvoie True si tous les éléments de t sont
    identiques et False sinon
    '''
    for i in range(len(t) - 1):
        if t[i] != t[i+1]:#On a deux éléments diff
            return False
    return True

##Q7
def nb_mots(texte:str) -> int:
    '''
    Renvoie le nombre de mots dans texte
    '''
    c = 1 #On a un premier mot
    for car in texte:
        if car == ' ': #le mot se termine
            c = c + 1 #on a un nouveau mot
    return c

##Q8
def nb_lettres(chaine:str) -> int:
    '''
    Renvoie le nombre de lettre dans chaine
    '''
    c = 0
    for car in chaine:
        if car != ' ' and car != ',' and car != '.' and car != "'":
            c = c + 1
    return c
##Q9
def occurences(caractere:str, chaine:str) -> int:
    '''
    Renvoie le nombre de fois que la lettre caractere
    apparait dans chaine
    '''
    c = 0
    min = chaine.lower()
    minc = caractere.lower()
    for car in min:
        if car == minc:
            c = c + 1
    return c

##Q10
def somme(n:int) -> int:
    '''
    Renvoie la somme des chiffres de n (supposé positif)
    '''
    chaine = str(n)
    s = 0
    for numero in chaine:
        s = s + int(numero)
    return s

##Q11
def nb_lettres2(texte:str) -> None:
    '''
    Affiche successivement le nombre de lettres
    dans chaque mot de texte
    '''
    c = 0
    for car in texte:
        if car != '.' and car != ',' and car != ' ':
            c = c + 1
        elif car == ' ':
            print(c)
            c = 0