Python

Bonjour
Je débute avec Python et j'aimerais avoir de l'aide.
Pourquoi ce programme ne fonctionne pas. Le compilateur dit erreur ligne 13 X:-(
ch = input('Saisir le 1er terme a de la suite u  : ')
a =int(ch)
ch2 = input('Saisir le 1er terme b de la suite v  : ')
b =int(ch2)
ch3 = input('Saisir un entier naturel non nul N   : ')
N =int(ch3)

u=a
v=b
n=0

while n<N:
n = n+1
u=(3*a+b)/4
v=(2*a+3*b)/5

print("u=",u)
print("v=",v)

[Python sans indentation, c'est de la bouillie sans signification. AD]

Réponses

  • Ton code est vraiment écrit comme ça même avec la balise code ?
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Bonjour,

    Il faut écrire:
    ch = input('Saisir le 1er terme a de la suite u : ') 
    a =int(ch) 
    ch2 = input('Saisir le 1er terme b de la suite v : ') 
    b =int(ch2) 
    ch3 = input('Saisir un entier naturel non nul N : ') 
    N =int(ch3) 
    
    u=a 
    v=b 
    n=0 
    
    while n<N: 
        n = n+1 
        u=(3*a+b)/4 
        v=(2*a+3*b)/5 
    
    print("u=",u) 
    print("v=",v)
    
    Quand on fait du Python, le maître mot est: INDENTATION !!!!
    Je le répète $50000$ fois par cours.

    Cordialement,

    Rescassol
  • Bonjour Nicolas et Rescassol.
    Merci Rescassol,
    Mais ce que je voudrais c'est qu'il m'affiche tous les termes du rang 1 à N pour les deux suites u et v. Ici en testant, il ne m'affiche que u1 et v1. Où est l'erreur ? je me dis qu'il faut peut être utiliser un while.
    Amicalement
  • il ne m'affiche que u1 et v1. Où est l'erreur ?
    ...
        u=(3*a+b)/4 
        v=(2*a+3*b)/5 
    ...
    

    Vu que a et b ne changent pas ....
  • Bonjour,
    ch = input('Saisir le 1er terme a de la suite u : ') 
    a =int(ch) 
    ch2 = input('Saisir le 1er terme b de la suite v : ') 
    b =int(ch2) 
    ch3 = input('Saisir un entier naturel non nul N : ') 
    N =int(ch3) 
    
    u, v, n = a , b, 0
    for n in range(1,N):
        u, v=(3*u+v)/4, (2*u+3*v)/5 
        
        print('u=',u) 
        print('v=',v) 
        print()
    

    Cordialement,

    Rescassol
  • Remarques :
    • il est inutile de définir la variable n avant de l'utiliser dans une boucle ;
    • dans range(1,N), la variable n va de 1 à N-1 ; il y a donc N-1 itérations et on aboutit à u(N-1) et pas u(N) – c'est peut-être délibéré mais ce n'était pas le cas pour la boucle initiale de Bouzar.
    En l'espèce, comme on ne fait rien de la variable de boucle, il n'est même pas utile de la nommer. Pour afficher le terme d'indice N, on peut donc faire :
    for _ in range(N):
        u, v=(3*u+v)/4, (2*u+3*v)/5 
    
        print('u=',u) 
        print('v=',v) 
        print()
    
  • Bonjour à tous,
    C'est bon cela fonctionne. Merci de pour l'aide.81290
  • Le zéro dans range(0,N) est inutile. Pour Python, range(N) est la liste des N premiers entiers [0,1,...,N-1].
  • Bonsoir Math Coss
    Merci pour l'information.
    Amicalement
Connectez-vous ou Inscrivez-vous pour répondre.