Chaînes de caractères

Une ligne étoilée.

Écrire un programme affichant une chaîne de longueur 10, chaque caractère de la chaîne étant égal au caractère * :

**********

Une première solution.


print('**********')

Seconde solution.


print('*'*10)

Troisième solution.


ch='' 					   # ch est initialisée à la chaîne vide
for j in range(0,10):	   # pour chaque valeur de j de 0 à 9 :
	ch = ch+'*' 			   #     on ajoute une * à la chaîne ch
print(ch)				   # on affiche la chaîne résultante

Ciel étoilé.

Pour obtenir deux lignes d'étoiles :

**********
**********

On peut simplement écrire deux instructions print comme suit :


ch = '*'*10
print(ch)
print(ch)

On peut aussi utiliser "\n" marquant une fin de ligne.


ch = '*'*10
print(ch+'\n'+ch)
Écrire un programme qui affiche 20 lignes de 25 étoiles.

Première solution.


ch = '*'*25
for j in range(20):
	print(ch)

Seconde solution.


ch = '*'*25
ch = ch+'\n'
ch = ch*20
print(ch)
ou en une ligne :

print(('*'*25+'\n')*20)

Carré d'étoiles.

Écrire un programme qui :

  1. demande à l'utilisateur d'entrer une ligne d'étoiles,
  2. puis affiche un carré d'étoiles, le côté du carré étant donné par la ligne d'étoiles de l'utilisateur.

Par exemple, si l'utilisateur rentre ***, le programme devra afficher :

*** 
***
***

Première solution.


texte = input("Entrez une ligne d'étoiles : ")
longueur_cote = len(texte)
texte = texte+'\n'
print(texte*longueur_cote)

Seconde solution.


texte = input("Entrez une ligne d'étoiles : ")
for x in texte:
	print(texte)

Mot étoilé.

Écrire un programme qui :

  1. demande à l'utilisateur d'entrer un mot,
  2. puis affiche ce mot en intercalant * entre chaque lettre du mot.

Par exemple, si l'utilisateur rentre python, le programme devra afficher :

p*y*t*h*o*n 

Première solution.


ch = input("Veuillez entrer un mot : ")
sch = '' # sch est initialisée à la chaîne vide
for x in ch :
	sch = sch+x+'*'  # on ajoute à sch chaque caractère suivi d'une étoile
sch = sch[0:len(sch)-1] # on coupe ainsi le dernier caractère : c'est une étoile (en trop)
print(sch)

Seconde solution.


ch = input("Veuillez entrer un mot : ")
sch = '' 
for k in range(0,len(ch)-1) :
	sch = sch+ch[k]+'*'   # on ajoute chaque caractère, sauf le dernier, suivi d'une étoile
sch = sch+ch[len(ch)-1] # on ajoute le dernier caractère de ch
print(sch)

Répétition prévue.

Écrire un programme qui :

  1. demande à l'utilisateur d'entrer un mot,
  2. puis un entier ayant un nombre de chiffres égal au nombre de lettres du mot,
  3. puis affiche des lignes de caractères sur le modèle de l'exemple ci-dessous.

Si l'utilisateur entre python puis 213142. Le programme devra afficher :

pp
y
ttt
h
oooo
nn

Les chiffres de l'entier entré donneront donc le nombre de répétitions de la lettre ayant le même rang dans le mot.


ch = input('Entrez un mot : ')
nb = input('Entrez un entier ayant le même nombre de chiffres que le mot : ')

for j in range(0,len(ch)):
	print(ch[j]*int(nb[j]))

Triangle étoilé.

Écrire un programme qui :

  1. demande à l'utilisateur un entier n > 0,
  2. puis affiche un triangle d'étoiles, suivant le modèle des exemples ci-dessous.

Avec n=4 :

   *   
  ***  
 ***** 
*******

Avec n=7 :

      *      
     ***     
    *****    
   *******   
  *********  
 *********** 
*************

Le triangle comporte donc n lignes, la première compte une étoile, chaque ligne compte deux étoiles de plus que la précédente.

Notons u(j) le nombre d'étoiles de la ligne j :
le triangle comporte n lignes, la première compte une étoile, chaque ligne compte deux étoiles de plus que la précédente.

La suite u est donc arithmétique de raison 2. On en déduit facilement l'expression de u(j) : u(j)=2j-1.

La dernière ligne compte donc u(n)=2n-1 étoiles. Chacune des lignes précédentes compte donc un nombre total de blancs (espaces) égal à (2n-1)-(2j-1)=2(n-j).

La ligne j (1≤ j ≤ n) est donc ainsi constituée :

  1. n-j espaces
  2. puis 2j-1 étoiles
  3. puis n-j espaces.

n = int(input('Entrez un entier n strictement positif : '))

for j in range(1,n+1) :
	for k in range(n-j) : print(' ',end='')
	for k in range(2*j-1) : print('*',end='')
	for k in range(n-j) : print(' ',end='')
	print()

Autre version :


n = int(input('Entrez un entier n strictement positif : '))

triangle = ''

for j in range(1,n+1) :
	ligne = ' '*(n-j)+'*'*(2*j-1)+' '*(n-j)
	triangle += ligne+'\n'

print(triangle)