Les entrées de valeurs avec Python

Instruction input de Python

Vous débutez avec Python et vous souhaitez écrire un programme qui interagit avec l’utilisateur. Voici de quoi vous initier à l’instruction input (voir aussi la page sur les conditions).

 

Input

L’instruction input permet à l’utilisateur d’entrer la valeur d’une variable et éventuellement d’afficher au préalable un texte écrit entre guillemets dans le programme.

Prenons quelques exemples simples.

n = float(input("Choisissez un nombre : "))
print("Vous avez choisi",n)

La variable est un flottant que l’utilisateur entre après qu’il a lu « Choisissez un nombre : ». Notez que l’on précise à quel type de variable doit s’attendre Python. Ici, un flottant (un décimal). Dès que le nombre est entré et validé, il apparaît après le texte « Vous avez choisi ».

Choisissez un nombre : 1.3
Vous avez choisi 1.3

Si l’on ne souhaite pas afficher de texte pour guider l’utilisateur, on peut procéder ainsi :

n = float(input())
print("Vous avez choisi",n)

Si cela vous semble plus clair, vous pouvez faire intervenir deux variables.

m = input()
n = float(m)
print("Vous avez choisi",n)

Exemple de saisie et de résultat :

6
Vous avez choisi 6.0

Autre exemple. L’utilisateur entre un nombre de secondes (donc un entier). À l’écran doit s’afficher la conversion en heures, minutes et secondes.

Pour obtenir le nombre d’heures, on doit diviser la valeur entrée par 3 600 (nombre de secondes dans une heure). Le reste de la division euclidienne doit être divisé par 60 pour obtenir les minutes et le reste est le reliquat de secondes. Rappelons que l’opérateur de la division euclidienne est \(\\\) et que celui du reste est \(%.\)

n = int(input("Nombre de secondes : "))
h = n // 3600
r = n % 3600
m = r // 60
s = r % 60
print("Soit", h, "h,", m, "mn et", s, "s")

Attention à ne pas oublier de virgules !

Exemple de sortie :

Nombre de secondes : 5101
Soit 1 h, 25 mn et 1 s

input

 

Exercice 1

Calculer une moyenne pondérée (nous supposons que vous avez déjà étudié les boucles bornées). Le nombre de valeurs pondérées sera stockée dans une variable \(n.\)

Suggestion de corrigé :

coeff est la somme des coefficients de pondération, somme est la somme des valeurs pondérées. Chaque valeur se trouve dans la variable var et chaque pondération dans pond.

n = int(input("Nombre de valeurs : "))
somme = 0
coeff = 0
for i in range(1,n+1):
    val = float(input("Valeur : "))
    pond = float(input("Pondération : "))
    somme = somme + val * pond
    coeff = coeff + pond
print("moyenne pondére :",somme/coeff)

Exemple d’interaction avec l’utilisateur :

Nombre de valeurs : 3
Valeur : 1
Pondération : 2
Valeur : 2
Pondération : 2
Valeur : 3
Pondération : 1
moyenne pondére : 1.8

 

Exercice 2

Voici l’extrait d’un énoncé d’une épreuve de maths (bac ES 2010, centres étrangers). Les suites sont enseignées en classe de première. L’exercice est traité en page d’exemple de suite arithmético-géométrique.

    Le nombre d’arbres d’une forêt, en milliers d’unités, est modélisé par la suite \((u_n)\) où \(u_n\) désigne le nombre d’arbres, en milliers, au cours de l’année (2010 + n). En 2010, la forêt possède 50 000 arbres. Afin d’entretenir cette forêt vieillissante, un organisme régional d’entretien des forêts décide d’abattre chaque année \(5\%\) des arbres existants et de replanter 3 000 arbres.

Illustration : la Forêt de Félix Ziem (Petit Palais)

la Forêt

À partir de cet énoncé, notre défi sera de rédiger un programme pour connaître le nombre d’arbres constituant la forêt à la fin d’une année choisie par l’organisme régional.

L’énoncé ajoutait :

    Montrer que la situation peut être modélisée par \(u_0 = 50\) et pour tout entier naturel \(n\) par la relation : \(u_{n+1} = 0,95u_n + 3.\)

Nous utiliserons cette formule de récurrence, à ceci près que l’on ne cherchera pas des milliers d’arbres mais directement le nombre d'arbres. Donc \(u = 50\,000\) et \(u = 0,95u + 3\,000.\)

De plus, nous ne considérerons pas les éventuelles décimales du résultat (donc, pas d’arrondi). Ce sera plus simple !

Proposition de corrigé :

u = 50000

a = int(input("Année : "))
f = a - 2010

for i in range(f):
    u = 0.95*u + 3000

print(int(u))

Exemple d’échange avec le programme :

Année : 2015
52262

Mathématiquement, la suite tend vers 60 000 arbres ; mais en raison de notre arrondi par défaut, nous obtiendrons 59 999 si l’on entre une année très lointaine.

 

arbre auto-planté