Vous êtes sur la page 1sur 19

Tp n5 PYTHON

Ichrak hajri td5

Ex1
def saisie():

while True:

ch=(input("donner une chaine non vide"))

if(ch.isalpha() and 0<len(ch)<=50):

break

return ch

def crypter(ch):

res=""

c=1

for i in range(1,len(ch)):

if(ch[i]==ch[i-1]):

c+=1

else:

res+=str(c)+ch[i-1]

c=1

res += str(c) + ch[-1]

return res

#--------------------------

ch=saisie()

res=crypter(ch)

print("la chaine crypte =",res)

Ex2
def crypter(ch):

code="HYLUJPVREAKBNDOFSQZCWMGITX"

res=""

for i in range(len(ch)):
c=ord(ch[i])-ord('A')

res+=code[c]

print("la chaine crypte =",res)

#----------------------------

while True:

ch=(input("donner une chaine non vide"))

if(ch.isalpha() and 0<len(ch) and ch==ch.upper()):

break

crypter(ch)

EX3

def somme(x):

s=0

ch=str(x)

for i in range(len(ch)):

s=s+int(ch[i])

return s

#-----

while True:

n=int(input("donner taille de liste"))

if(5<=n<=50):

break

l=[]

ls=[]

for i in range(n):

while True:

x=int(input("donner un entier"))

if(x>0):

break
l.append(x)

for i in range(n):

ls.append(somme(l[i]))

print("premier liste")

for i in range(n):

print(l[i])

print("2eme liste\n")

for i in range(n):

print(ls[i])

Ex4 :

def premier(x):

i=2

while(i<=x/2 and x %i!=0):

if(x%i!=0):

i=i+1

return i>x/2

def superpremier(x):

test=True

while(test==True and x!=0):

if(premier(x)):

x=x/10

else:
test=False

return test

def saisie():

while True:

n=int(input("donner n"))

if(5<=n<=50):

break

return n

def remplir(l,n):

for i in range(n):

while True:

x=int(input("donner une valeur"))

if(x>0):

break

l.append(x)

return l

def affiche(l,n):

for i in range(n):

if(superpremier(l[i])):

print(l[i])

#----------------

l=[]

n=saisie()

l=remplir(l,n)

affiche(l,n)
EX5

def premier(x):

i=2

while(i<=x/2 and x %i!=0):

if(x%i!=0):

i=i+1

return i>x/2

def fact(x):

f=1

for i in range(2,x+1):

f=f*i

return f

def pfact(x):

for i in range(1,x+1):

if(premier(x) and (x==fact(i)-1 or x==fact(i)+1)):

return True

return False

def saisie():

while True:

n=int(input("donner n"))

if(5<=n<=50):

break

return n
def remplir(l,n):

for i in range(n):

while True:

x=int(input("donner une valeur"))

if(x>0):

break

l.append(x)

return l

def affiche(l,n):

for i in range(n):

if(pfact(l[i])):

print(l[i])

#----------------

l=[]

n=saisie()

l=remplir(l,n)

affiche(l,n)

EX6

def somme_chiffre(x):

ch=str(x)

s=0

for i in range(len(ch)):

s=s+int(ch[i])
return s

def somme_fact(x):

s=0

i=2

while(x!=1):

if(x%i==0):

if(i>10):

s+=somme_chiffre(i)

else:

s=s+i

x=x//i

else:

i=i+1

if x>1:

s+=x

return s

def smith(x):

return(somme_chiffre(x)==somme_fact(x))

def saisie():

while True:

n=int(input("donner n"))

if(5<=n<=50):

break

return n

def remplir(l,n):

for i in range(n):

while True:

x=int(input("donner une valeur"))

if(x>0):

break

l.append(x)
return l

def affiche(l,n):

for i in range(n):

if(smith(l[i])):

print(l[i])

#----------------

print(somme_fact(636))

l=[]

n=saisie()

l=remplir(l,n)

affiche(l,n)

EX7

def antipal(x):

ch=str(x)

i=0

j=len(ch)-1

while(i<j):

if(ch[i]==ch[j]):

return False

else:

i+=1

j-=1

return True

def maximum(ch):

m=0
for i in range(1,len(ch)):

if(ord(ch[i])>ord(ch[m])):

m=i

return m

def former(x):

ch=str(x)

res=" "

while(ch!=""):

if(ch[maximum(ch)]!=res[len(res)-1]):

res=res+ch[maximum(ch)]

if maximum(ch)!=0:

ch=ch[:maximum(ch):]+ch[maximum(ch)+1:]

else:

ch=ch[1:len(ch):]

return int(res)

def saisie():

while True:

n=int(input("donner n"))

if(5<=n<=50):

break

return n

def remplir(l,n):

for i in range(n):

while True:

x=int(input("donner une valeur"))

if(antipal(x)):

break

l.append(x)

return l

def modifier(l,n):

for i in range(n):
l[i]=former(l[i])

return l

def affiche(l,n):

for i in range(n):

print(l[i])

#------------------

l=[]

n=saisie()

l=remplir(l,n)

l=modifier(l,n)

affiche(l,n)

EX8

def maximum(ch):

m=0

for i in range(1,len(ch)):

if(ord(ch[i])>ord(ch[m])):

m=i

return m

def minimum(ch):

m=0

for i in range(1,len(ch)):

if(ord(ch[i])<ord(ch[m])):

m=i

return m

def former1(x):
ch=str(x)

res=" "

while(ch!=""):

m=maximum(ch)

if(ch[m]!=res[len(res)-1]):

res=res+ch[m]

if m!=0:

ch=ch[:m:]+ch[m+1:]

else:

ch=ch[1:len(ch):]

return int(res)

def former2(x):

ch=str(x)

res=" "

while(ch!=""):

m=minimum(ch)

if(ch[m]!=res[len(res)-1]):

res=res+ch[m]

if m!=0:

ch=ch[:m:]+ch[m+1:]

else:

ch=ch[1:len(ch):]

return int(res)

def saisie():

while True:

x=int(input("donner le premier terme"))

if(x>=1000 and x<=9999):

break

return x

def suite(x):

print(x)
nb=2

un=former1(x)-former2(x)

print(un)

while(un!=x):

x=un

un=former1(x)-former2(x)

if(un!=x):

print(un)

nb=nb+1

print("nombre de terme est",nb)

def suite1(x):

nb=1

print(x)

while True:

un=former1(x)-former2(x)

print(un)

nb=nb+1

if(un==x):

break

else:

x=un

#------------

x=saisie()

suite(x)

Ex9
def saisie():

while True:

n=int(input("donner n"))

if(n>0):

break

return n

def remplir(l,n):

ch=str(n)

t=1

ch=ch[::-1]

while(ch):

ch1=ch[:3:]

l.append(int(ch1[::-1]))

ch=ch[3:]

t+=1

return l,t

def div(l,t):

s=0

sig=1

for i in reversed(l):

s+=i*sig

sig=-1*sig

return s

#--------------

l=[]

n=saisie()

l,t=remplir(l,n)

if(abs(div(l,t)%13==0)):

print(n,"est divisible par 13")

else:

print("n'est pas divisible")


Ex10

def premier(x):

i=2

while(i<=x/2 and x %i!=0):

if(x%i!=0):

i=i+1

return i>x/2

def existe(x,l):

for i in l:

if(i==x):

return True

return False

def premier_c(x):

test=premier(x)

l=[]

while(test and(existe(x,l)==False)):

l.append(x)

ch=str(x)

ch=ch[1]+ch[2:]+ch[0]

x=int(ch)

test=premier(x)

return test

def saisie():

while True:

p=int(input("donner p"))

q=int(input("donner q"))

if(10<p<q<=10000):

break
return p,q

def affiche(p,q):

for i in range(p,q+1):

if(premier_c(i)):

print(i)

#------------------

p,q=saisie()

affiche(p,q)

EX11 :

def modifier(l2,i,x):

for j in range(i+1,len(l2)):

if(l2[j]%x==0):

l2[j]=0

return l2

def supprimeMultiple(l1):

l2=l1

for i in range(len(l1)):

if(l1[i]!=0):

l2=modifier(l2,i,l1[i])

return l2

def cible(n):

l1=[]

l2=[]

for i in range(2,n+1):

l1.append(i)

l2=supprimeMultiple(l1)

return l2
def prime(n):

l=[]

l=cible(n)

for i in l:

if i!=0:

print(i)

#____

n=int(input("donner un entier"))

print("les nombres le petits que",n,"sont")

prime(n)

Ex12

def rotation(l):

l.append(l[len(l)-1])

for i in range(len(l)-1, 0, -1):

l[i] = l[i-1]

l[0] = l[len(l)-1]

l=l[:len(l)-1]

return l

def decalage(l,n):

for i in range(n):

l=rotation(l)

return l

#-----------

l=[1000,1,2,3,99,-5]

print(decalage(l,3))
EX13_14

def sameChar(l1,l2):

l3=[]

if(len(l1)>len(l2)):

p=len(l2)

g=len(l1)

else:

p=len(l1)

g=len(l2)

for i in range(p):

if(l2[i]==l1[i]):

l3.append(1)

else:

l3.append(-1)

for i in range(g-p):

l3.append(0)

print(l3)

#---------

l1=['c','b','a','d']

l2=['a','b','c','d','e','f','g']

print(sameChar(l1,l2))

Ex15 :

def saisie():

while True:

n=int(input("donner le nbr de participent"))


if(2<=n<=60):

break

return n

def remplir_NOMS(n):

nom=[]

for i in range(n):

a=input("donner un non")

nom.append(a)

return nom

def remplir_score(n):

temps=[]

values = []

for i in range(n):

for i in range(3):

value = input(f"Entrez la valeur {i+1}: ")

values.append(value)

t= tuple(values)

temps.append(t)

return temps

def moy_temps(nom, temps, n):

d = {}

for i in range(n):

s = float(temps[i][1]) + float(temps[i][0]) + float(temps[i][2])

d[nom[i]] = s / 3

return d

def gangnant(d,n):

p= list(d.items())[0]

m=p[0]

n=p[1]

for key, value in d.items():

if(value<n):
n=value

m=key

print("le gangant est ",m)

#---------

n=saisie()

nom=remplir_NOMS(n)

temps=remplir_score(n)

d=moy_temps(nom,temps,n)

gangnant(d,n)

Vous aimerez peut-être aussi