#----------------------------------------------------
#------Worksheet: Strings and conditional input------
#----------------------------------------------------

##Exercice 1
#1- Quelle est la commande permettant de saisir une chaîne ph qque?
ph=input('une chaîne qq')

#2-Un script permettant de saisir 1 seule caractère?
while  True:
   c=input('1 seule caractère')
   if len(c)==1:break

#3- Écrire un script Python qui, pour une chaîne ph  et un caractère c donnes, permet de:
    # - Donnez la longueur de ph, la liste d apparition de c dans ph et si c appartient a ph.
    # - Vérifier si ph est 100% isAlpha, isAlnum, isDigit, isUpper, isLower, 
    # Sans utiliser les fonctions pré-définies
l=0
list_index=[]
isIn=False
isAlpha=True
isAlnum=True
isDigit=True
isUpper=True
isLower=False
for i in range(len(ph)):
   l+=1
   if ph[i] ==c:
       list_index.append(i)
       isIn=True
   if isDigit and not(str(0)<=ph[i]<=str(9)):isDigit=False
   if isAlpha and not('a'<=ph[i]<='z' or 'A'<=ph[i]<='Z'):isAlpha=False
   if isUpper and not('A'<=ph[i]<='Z'):isUpper=False
   if isLower and not('a'<=ph[i]<='z' ):isLower=False
   if isAlnum and not (isAlpha or isDigit):isAlnum=False
print('longueur de ph est',l)
print('liste d apparition de ',c,' ph est',list_index)
if isDigit:print('notre chaîne est 100% ar9am')
else:print('notre chaîne est mouch 100% ar9am')
if isAlpha:print('notre chaîne est 100% 7ourouf')
else :print('notre chaîne est mouch 100% 7ourouf')
if isAlnum:print('notre chaîne est 100% ar9am wa 7ourouf')
else: print('notre chaîne est mouch 100% ar9am wa 7ourouf')
if isUpper:print('notre chaîne est 100% majuscule')
else:print('notre chaîne est mouch 100% majuscule')
if isLower:print('notre chaîne est 100% minuscule')


##Exercice 2
###1- Sans utiliser les fonctions pre_definies, écrire un script qui permet de saisir ph qui commence par une lettre majuscule et se termine par un caractère spécial. 
while True:
    ph=input('donner une chaîne selon nos critères')
    if 'A'<=ph[0]<='Z' and not('a'<=ph[-1]<='z' or 'A'<=ph[-1]<='Z' or str(0)<=ph[-1]<=str(9)):
        break

###2- saisir une liste de mots tels que:
    # -chaque mot est de len>=4
    # -la saisi de mots se termine par l’entrée du mot 'end'.

list_mot=[]
i=0
while True:
    print('----mot indice=',len(list_mot)+1,'------')
    while True:
        mot = input('donner un mot de len >=4')
        if len(mot)>=4 or mot=='end':break

    if mot=='end':break
    else:list_mot.append(mot)


#3- remplacer les mot de list_mot dans ph par des '*' en respectant les longueur
new_ph=ph
for word in list_mot:
   new_ph=new_ph.replace(word,len(word)*'*')    

#4- remplacer les sous-mot de list_mot dans ph par des '*' sauf pour le premier et dernier caractère, et en respectant les longueur
new_ph=ph
for word in list_mot:
    new_ph=new_ph.replace(word[1:-1],len(word[1:-1])*'*')


   
