Fonctions

Un capital et ses intérêts

Un capital C (en euros) est placé à intérêts composés pendant n années au taux de t % par an : chaque année, on ajoute au capital l'intérêt produit par ce capital au taux de t%.

  1. On suppose que C = 10 000 et t = 2. Calculer le capital obtenu au bout d'un an et au bout de deux ans.
    1. Écrire une fonction nommée capital, de paramètres le capital C (en euros), le taux d'intérêt t(en %) et la durée n (en années), qui renvoie le nouveau capital après une durée de n années.
    2. A l'aide de cette fonction vérifier les résultats de la question 1.
  2. Ecrire une autre fonction nommée interets, de paramètres le capital C (en euros), le taux d'intérêt t (en %) et la durée n (en années), qui renvoie les intérêts reçus au cours des n années.
  3. En utilisant la fonction interets calculer les intérêts d'un capital de 10 000 reçus au bout de 2 ans, 5 ans et 10 ans.

Les tarifs de la poste

  1. Au bout d'un an, on a : \(C =10 000 + 0,02\times 10000 = 10200.\)

    Au bout de deux ans, on a : \(C =10 200 + 0,02\times 10200 = 10404.\)

    1. def capital (C,t,n) :
          """
          fonction, de paramètres C (euros), t(%) et n(années),
          qui renvoie le nouveau capital au bout de n années
          """
          for k in range(1,n+1) :
              C = C + t*C/100
          return C
    2. On retrouve le même résultat
  2. def capital (C,t,n) :
        """
        fonction, de paramètres C (euros), t(%) et n(années),
        qui renvoie le nouveau capital au bout de n années
        """
        for k in range(1,n+1) :
            C = C + t*C/100
        return C
    def interets(C,t,n):
        """
        fonction, de paramètres C (euros), t(%) et n(années),
        qui renvoie les intérêts reçus au cours des n années
        """
        return capital(C,t,n)-C
  3. >>> interets(10000,2,2)
    404.0
    >>> interets(10000,2,5)
    1040.808031999999
    >>> interets(10000,2,10)
    2189.944199947571
    >>>

Les tarifs de la poste

Écrire une fonction, de paramètres la nature de la lettre à poster et son poids, qui renvoie le tarif du timbre à poster sur cette lettre.

On trouve sur le site web de la Poste le tableau suivant (au 1er octobre 2011) :

Poids jusqu'àLettre verteLettre prioritaireEco poli
20 g0,57 €0,60 €0,55 €
50 g0,95 €1,00 €0,78 €
100 g1,40 €1,45 €1,00 €

Les tarifs de la poste

def timbre(lettre,poids) :
    """
    fonction, de paramètres lettre (verte,prioritaire ou eco poli)
    et poids (≤20, entre 20 et 50 ou entre 50 et 100), qui renvoie le prix d'un timbre
    """
    if lettre == "verte":
        if poids ≤ 20 :
            return "Vous allez payer 0.57 €"
        elif poids ≤ 50 :
            return "Vous allez payer 0.95 €"
        elif poids ≤ 100:
            return "Vous allez payer 1.40 €"
    elif lettre == "prioritaire":
        if poids ≤ 20:
            return "Vous allez payer 0.60 €"
        elif poids ≤ 50:
            return "Vous allez payer 1.00 €"
        elif poids ≤ 100:
            return "Vous allez payer 1.45 €"
    elif lettre == "ecopoli":
        if poids ≤ 20:
            return "Vous allez payer 0.55 €"
        elif poids ≤ 50:
            return "Vous allez payer 0.78 €"
        elif poids ≤ 100:
            return "Vous allez payer 1.00 €"

Année bissextile.

On rappelle que les années bissextiles sont les années divisibles par 4, à l'exception de celles qui sont divisibles par 100 sans l'être par 400.
Par exemple, 2000 est une année bissextile (2000 est divisible par 4. 2000 est divisible par 100 mais aussi par 400 : ne fait donc pas partie des exceptions).
2012 est divisible par 4 (et pas par 100) : 2012 est bissextile.
1900 est divisible par 4, par 100 mais pas par 400. 1900 n'est pas bissextile.

Écrire une fonction :

  1. Entrée : un entier naturel n
  2. Sortie : l'année n est bissextile ou pas.

Une solution de l'exercice "Année bissextile".


def bissextile(n) :
	if(n % 4 == 0 and n % 100 != 0) or (n % 400 == 0):
		print("L'année {} est une année bissextille".format(n))
	else :
		print("L'année {} n'est pas une année bissextille".format(n))

bissextile(1900)
bissextile(2000)
bissextile(2002)
bissextile(2012)

Ce qui affiche :

L'année 1900 n'est pas une année bissextille
L'année 2000 est une année bissextille
L'année 2002 n'est pas une année bissextille
L'année 2012 est une année bissextille

Nombre Mystérieux.

on propose de jouer au Nombre Mystérieux :

La règle de ce jeu est très simple. L'ordinateur choisit une valeur entière comprise entre 1 et 100 au hasard. Le joueur essaie de trouver cette valeur. A chaque essai, l'ordinateur affiche l’un de ces trois messages :

  1. Bravo, vous avez gagné !
  2. C’est plus …
  3. C’est moins …

Écrire un programme qui simule ce jeu

Remarque

Pour crée un nombre entier aléatoire entre 1 et 100 on utilise le module random comme suit :

import random
nombre = random.randint(1,100)

Pour en savoir plus, voir ce cours

Vous trouverez toutes ces fonctions sur le site de documentation python.

Résolution de l'exercice "Nombre Mystérieux".

import random
def mysterieux() :
    """
    Fonction qui permet de deviner un entier entre 1 et 100
    donné aléatoirement par l'ordinateur
    """
    mystere = random.randint(1,100)
    trouve = True
    k=''
    while trouve :
        nombre = int(input('Entrez un entier entre 1 et 100 : '))
        if nombre == mystere :
            trouve = False
        elif nombre < mystere :

            print("C'est plus grand")
        else :
            print("C'est plus petit")
    print("Bravo, vous avez gagné !")

Deuxième solution

import random
def mysterieux() :
    """
    Fonction qui permet de deviner un entier entre 1 et 100
    donné aléatoirement par l'ordinateur
    """
    mystere = random.randint(1,100)
    trouve = True
    k=''
    while trouve :
        nombre = int(input(k+'entrez un entier entre 1 et 100 : '))
        chaine=str(nombre)
        if nombre == mystere :
            trouve = False
        elif nombre < mystere :

            k="C'est plus grand que "+chaine+", "
        else :
            k="C'est plus petit que "+chaine+", "
    print("Bravo, vous avez gagné !")

Suite de Fibonacci.

On considère la suite des entiers naturels suivante : { 1 ; 1 ; 2 ; 3 ; 5 ; 8 ; 13 ; 21 ; 34 ; 55 ; 89 ; 144 ; 233 ; 377 ; 610 ; 987 ; 1597 ; 2584 ; 4181 ; 6765 ; 10946 }.

Écrire une fonction en python permettant d'afficher cette suite d'entiers naturels.

Résolution de l'exercice "Suite de Fibonacci".


def fibo (n) :
    ress=1 #résultat fibo(1)
    ancien=1 #ancien résultat fibo(0)
    c=1 # compte n
    while c < n :
		tempor = ress
		ress = ress + ancien  # Formule
		ancien = tempor
		c = c+1
	return ress
#Programme principal
n = int(input("Saisir l'entier naturel n : "))
for i in range(0,n+1):
	u = fibo(i)
	print("le terme de la suite de fibonacci au rang {} est {}".format(i,u))
 

Javanais.

Les règles du javanais :

  • On ajoute 'av' après chaque consonne ou groupe de consonnes (comme par exemple ch, cl, ph, tr,…) d’un mot.
  • Si le mot commence par une voyelle, on ajoute av devant cette voyelle.
  • On ne rajoute jamais av après la consonne finale d’un mot.

Écrire une fonction qui prend en entrée un mot et donne en sortie sa version javanaise.

La syllabe qui vient parasiter le mot (en javanais classique : 'av') viendra également en paramètre de la fonction.

Exemple :

javanais('Abraracourcix','av') :  Avabravaravacavourcavix
javanais('Abraracourcix','oz') :  Ozabrozarozacozourcozix
javanais('pythonique','ail') :  pailythailonailiqailue

Résolution de l'exercice "Javanais".


def javanais(mot, syll) :
	
	## on passe le mot en minuscules.
	motminus=mot.lower()
	
	voyelles='aeiouy'
	Voyelles='AEIOUY'
	consonnes='bcdfghjklmnpqrstvwxz'
	Consonnes='BCDFGHJKLMNPQRSTVWXZ'
	
	motjav='' # contiendra la traduction javanaise.
	
	## boucle pour ajouter syll derrière les groupes de consonnes  
	## sauf derrière la consonne éventuelle de fin de mot.       
	for j in range(len(motminus)-1) :
		if (mot[j] in consonnes and motminus[j+1] not in consonnes) :
			motjav+=motminus[j]+syll
		else :
			motjav+=motminus[j]
	
	## On ajoute la dernière lettre du mot de départ au résultat. 
	motjav+=motminus[-1]  
	
	## On ajoute syll au début du mot résultat      
	## si mot commençait par une voyelle.          
	if motminus[0] in voyelles :
		motjav=syll+motjav
		
	## Raffinement pour le fun.   
	## si le mot commençait par une majuscule (nom propre...)  
	## le résultat commencera par une majuscule.  
	if mot[0] in Voyelles or mot[0] in Consonnes:
		motjav=motjav[0].upper()+motjav[1:]
		
	return motjav
	
print("javanais('Abraracourcix','av') : ", javanais('Abraracourcix','av'))
print("javanais('Abraracourcix','oz') : ", javanais('Abraracourcix','oz'))

print("javanais('pythonique','ail') : ", javanais('pythonique','ail'))