Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 13-06-2009 11:17:06

Golgup
Membre actif
Inscription : 09-07-2008
Messages : 574

python, fonction produit

Bjr,

Je sais qu'il existe la fonction sum, existe t-il l'equivalent pour la fonction produit?

; )


« c’est cette infinité, insondable et obscure, cause des plus vils combats ! … »

Hors ligne

#2 13-06-2009 11:39:20

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 943

Re : python, fonction produit

BONJOUR,


Oui bien sûr, si c'est de cela qu'il s'agit :
[tex]n! = \prod_{i=1}^n i[/tex]
\prod en LaTeX avec la même syntaxe que \sum

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#3 13-06-2009 12:05:24

Golgup
Membre actif
Inscription : 09-07-2008
Messages : 574

Re : python, fonction produit

BONJOUR,
Merci yoshi mais c''est de Python dont je parle.

+

Dernière modification par Golgup (13-06-2009 12:23:02)


« c’est cette infinité, insondable et obscure, cause des plus vils combats ! … »

Hors ligne

#4 13-06-2009 14:31:05

Golgup
Membre actif
Inscription : 09-07-2008
Messages : 574

Re : python, fonction produit

Re,

ex:
t1=[1,2,3,7,5]
sum(t1)=18

et je demande si il existe une fonction produit <=>produit(t1)=210
merci

++


« c’est cette infinité, insondable et obscure, cause des plus vils combats ! … »

Hors ligne

#5 13-06-2009 14:54:08

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 943

Re : python, fonction produit

Salut,

Je cherche et je me renseigne...
Dès que j'ai la réponse, je te fais signe...
En attendant je te propose ça :

def prod(prod,L):
    for x in L:
        prod*=x
    return prod

Appel et résultat :

L=[1,3,9,6,4,15]
prod=prod(1,L)
print prod

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#6 13-06-2009 15:46:50

Golgup
Membre actif
Inscription : 09-07-2008
Messages : 574

Re : python, fonction produit

Merci,je pensais que la commande directe si elle existe serait plus rapide, mais cette façon va tres bien

a++


« c’est cette infinité, insondable et obscure, cause des plus vils combats ! … »

Hors ligne

#7 13-06-2009 16:44:01

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 943

Re : python, fonction produit

Salut,

Variante plus courte :

def prod(x,y) : return x*y

Appel et résultat :

L=[1,3,6,2,5,12]
reduce(prod,L)

@+

[EDIT]
On m'a proposé ça :

 reduce(lambda x, y: x *y, range(1, 10))

que j'ai adapté ainsi :

L=[1,3,6,2,5,12]
reduce(lambda x, y: x *y,L)

Plus court y a pas...

Pour les fonctions lambda : http://python.developpez.com/cours/Dive … ctions.php


Arx Tarpeia Capitoli proxima...

Hors ligne

#8 27-06-2011 18:54:09

ngatilio
Membre
Inscription : 18-09-2010
Messages : 14

Re : python, fonction produit

Je vais faire un exemple en pacal 7.0 ou Delphi


function product ( var x,y:real ):real ;
var p:real;
begin
        p:= x*y;
        product:= p;
end;
{appel produit}
begin
       write('entrer deux reels');
       read(a,b);
       s:=product (a,b);
       write('le produit est',s);
       readln();
end.
 

Dernière modification par ngatilio (05-05-2012 14:10:48)

Hors ligne

#9 20-12-2016 19:26:01

Richard
Invité

Re : python, fonction produit

Bonjour, il y a t-il un moyen en Python d'exploiter des fonctions définies par l'utilisateur. Je me demande si il est possible que l'utilisateur entre une fonction de la forme f(x)=... et que celle si soit exploitable en tant que fonction et non pas en tant que chaîne de caractère.
Par exemple comment pourrait-on écrire se simple programme:
fonction = input("f(x)=")
for x in range(10):
       print(int(fonction))

#10 20-12-2016 20:26:38

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 943

Re : python, fonction produit

Salut,

Tarabiscoté ton truc...
Quelque chose comme ça :

>>> g=lambda x:input("f(x) = ")
>>> for i in range(2):
        f=g(None)
        print(int(float(f)))

 
f(x) = 4.8
4
f(x) = -6.92
-6
>>>

J'ai constaté que le "None" est la seule chose qui ne cause pas d'erreur...
A toi de faire des essais.
Ça marche aussi comme ça :


>>> def bidon():
        f=input("f(x) = ")
        return f

>>> for i in range(3):
        f=bidon()
        print("f(x) = ",int(float(f)))

 
f(x) = 4.95
f(x) =  4
f(x) = 7.8
f(x) =  7
f(x) = -10.999
f(x) =  -10
>>>

Fonctions lambda :
https://docs.python.org/3/reference/expressions.html
http://lecoinduprogrammeur.org/2014/10/ … ns-lambda/
http://lptms.u-psud.fr/wiki-cours/index … _Fonctions

Et il y a d'autres liens en tapant via Google :  Python 3 fonctions lambda

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#11 21-12-2016 08:55:43

Richard
Invité

Re : python, fonction produit

Bonjour, merci pour votre réponse mais je pense ne pas avoir été très clair dans la question.
Ce que je veux dire, c'est que si l'utilisateur entre directement "2x²+5".
Dans la boucle : for x in range(-5,5)
Il faudrait que cela m'affiche
55
37
23
13
7
5
7
13
23
37

#12 21-12-2016 10:17:53

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 943

Re : python, fonction produit

Salut,


Il y a eu confusion de ma part : j'ai pris le mot fonction dans son sens informatique, alors que dans ton esprit, il s'agissait du sens mathématique...
Avant toute chose va voir là : http://www.bibmath.net/forums/viewtopic … 390#p25390
Pour ta compréhension : à la fin, zanarb a supprimé pratiquement toutes ses réponses.
Si j'ai bien compris, tu devrais trouver, là, chaussure à ton pied...

C'est du Python 2.
En Python 3
* raw_imput() a disparu remplacé par input
* xrange() a disparu remplacé par range()
* print est de venu une fonction : print()
* le from __future__ import division est inutile : c'était pour obliger la division Python 2 à se comporter "normalement" comme en Python 3...
En effet en Python 2
7/2 --> 3
7.0/2  ou 7/2.0 = 3.5
C'était exaspérant.

Après ta lecture, on y verra plus clair....

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#13 21-12-2016 12:01:04

richard
Invité

Re : python, fonction produit

merci, c'est la fonction eval() qui répond à mes problèmes!

#14 21-12-2016 12:26:54

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 943

Re : python, fonction produit

Re,

Parfait..

A ta disposition pour tout éclaircissement éventuel...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#15 30-06-2020 11:30:11

Tuidima
Membre
Inscription : 29-06-2020
Messages : 2

Re : python, fonction produit

yoshi a écrit :

Salut,

Je cherche et je me renseigne...
Dès que j'ai la réponse, je te fais signe...
En attendant je te propose ça :

def prod(prod,L):
    for x in L:
        prod*=x
    return prod

Appel et résultat :

L=[1,3,9,6,4,15]
prod=prod(1,L)
print prod

@+

Bonjour, j'espère que vous allez bien ? j'ai très peu de notions en python pour ne pas dire débutant je me demandais si vous auriez l'amabilité de m'aider sa serait super sympa, voici l'exercice <<Écrivez une fonction nommée numJour qui prend en paramètre une date et donne le numéro de jour dans l'année de cette date (de 1 à 366).

La date est fournie en trois entiers (jour, mois, année).

Par exemple print(numJour(12,1,2020)) doit afficher 12, et print(numJour(3,2,2020)) doit afficher 34, print(numJour(31,12,2020)) doit afficher 366..

Pour calculer ce numéro de jour, additionnez les nombre de jours dans chaque mois écoulé depuis le premier janvier (en utilisant nbjMois) puis ajoutez le numéro du jour dans le mois. Merci d'avance

Hors ligne

#16 30-06-2020 11:52:03

valoukanga
Membre
Inscription : 30-11-2019
Messages : 196

Re : python, fonction produit

Bonjour !

Je suppose dans la suite du message que ta fonction nbjMois prend en paramètre un numéro de mois et une année et renvoie le nombre de jours dans ce mois.

Pour répondre à ton problème, il faut comprendre comment tu ferais à la main pour trouver le nombre de jours, en décortiquant bien tes étapes. Imaginons par exemple que tu cherches à savoir combien de jours se sont écoulés lorsque l'on ait au 12 septembre, et que tu as pour faire cela le nombre de jours par mois de chaque mois. Comment vas-tu compter les jours ?

Hors ligne

#17 30-06-2020 12:26:36

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : python, fonction produit

Salut,

je complète le message ci-dessus de ceci : tu dois chercher à calculer le nombre de jours écoulés entre la date courante et celle du 31 décembre de l'année précédente. Peut-être que ce sera plus clair pour toi, car au début, dans ton message, ce n'est qu'implicite.
Alors, commence : que peux tu dire du numéro du jour du 15 février 2020 ?
Mine de rien, ces histoires de nombre de jours ne sont pas vraiment anodines, et servent par exemple, à faire des calculs d'intérêts ou bien de délais ou bien … Dans la vie courante, ça sert dans bien des situations, donc c'est une recherche intéressante.


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#18 30-06-2020 13:20:36

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 943

Re : python, fonction produit

Bonjour,


L'énoncé dit :

Écrivez une fonction nommée numJour qui prend en paramètre une date

mais ne précise pas si l'année doit être 2020...
Je te propose donc  d'écrire une fonction universelle, qui s'adapte à n'importe quelle année postérieure à la mise en place du calendrier Grégorien...
Tu auras besoin de savoir
1. Si l'année est bissextile. A partir de quel mois cela a-t-il une importance ?
2. De la liste du nombre de jours des mois.
    Le 1er mois de l'année porte le n°1 mais les listes de Python commencent à 0, pour simplifier, tu commenceras par ta liste avec 0.
    Tu écriras ensuite, le nombre de jours de chacun des 12 mois.
3. L'écriture d'un algorithme commence par le couple papier/crayon.
    A partir de tes deux dates, puis celle-ci (20,4,2020) fais le calcul à la main très précisément.
    Puis décris ta méthode en utilisant des mots (comme si tu expliquais ça par téléphone à un copain)
4. Cela fait, recherche l'ensemble des instructions Python qui vont te permettre de passer du français à Python
5. Une fois toi script mis au point, on s'occupera de faire en sorte qu'il marche pour 2019, 201,2022...

@+

[EDIT]Le temps que je finalise ma proposition pour être la plus courte et la plus simple possible, je me suis fait griller par mes deux petits camarades...
@valoukanga : utilises-tu déjà Python ? Si non, pourquoi ne pas t'y mettre ?

Dernière modification par yoshi (30-06-2020 20:18:33)


Arx Tarpeia Capitoli proxima...

Hors ligne

#19 30-06-2020 18:26:19

Tuidima
Membre
Inscription : 29-06-2020
Messages : 2

Re : python, fonction produit

valoukanga a écrit :

Bonjour !

Je suppose dans la suite du message que ta fonction nbjMois prend en paramètre un numéro de mois et une année et renvoie le nombre de jours dans ce mois.

Pour répondre à ton problème, il faut comprendre comment tu ferais à la main pour trouver le nombre de jours, en décortiquant bien tes étapes. Imaginons par exemple que tu cherches à savoir combien de jours se sont écoulés lorsque l'on ait au 12 septembre, et que tu as pour faire cela le nombre de jours par mois de chaque mois. Comment vas-tu compter les jours ?

Re-bonjour
pour trouver le numero du jours du mois je compte entre 1 et 31 variant d'un mois et d'une année à l'autre

Dernière modification par Tuidima (30-06-2020 18:28:57)

Hors ligne

#20 30-06-2020 19:35:16

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 943

Re : python, fonction produit

Bonsoir,

Je t'ai donné des pistes, j'ai ta fonction...
Si tu n 'as pas l'intention de t'y intéresser, aucun pb, je peux passer à autre chose, j'ai plusieurs projets à finir...

@+

[EDIT] un dernier mot :

pour trouver le numero du jours du mois je compte entre 1 et 31 variant d'un mois et d'une année à l'autre

Voilà une réponse difficilement exploitable : essaie de reformuler de façon précise ta réponse à Valoukanga, sinon vous aurez du mal à avancer et ensuite à passer à la programmation...
Ce que l'on conçoit bien s'énonce clairement
Et les mots pour le dire arrivent aisément.
Nicolas Boileau

Dernière modification par yoshi (30-06-2020 20:25:52)


Arx Tarpeia Capitoli proxima...

Hors ligne

#21 01-07-2020 18:42:30

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 943

Re : python, fonction produit

Re,

Aurais-je choqué le demandeur ?
Dommage pour lui, dans ce cas...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#22 02-07-2020 08:40:14

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : python, fonction produit

Salut,

et un travail  complémentaire à celui-là serait de chercher le jour de la semaine correspondant à cette date, ça peut-être très utile dans bien des circonstances.
Autant le premier programme ne semble pas très compliqué, autant je n'ai pas trop de lumières sur le second, dans l'hypothèse où on voudrait disposer d'une sorte de calendrier perpétuel, quelle que soit la date, genre quel est le jour de la naissance de la jeune fille aux beaux yeux verts qui me fait face :-)
A suivre !

PS : bien entendu, en cherchant peu, on trouve du code, mais l'intérêt est de chercher à le faire ex nihilo !

Dernière modification par freddy (02-07-2020 08:47:40)


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#23 02-07-2020 09:15:12

valoukanga
Membre
Inscription : 30-11-2019
Messages : 196

Re : python, fonction produit

Bonjour tout le monde !

@Yoshi : oui oui je sais coder en python les trucs de bases, les graphiques, ...

@Tuidima : ce que je voulais dire, c'est que pour savoir le nombre de jours dans un mois, tu n'as qu'à utiliser ta fonction nbjMois (si j'ai bien compris ce que tu voulais dire) : ce que j'ai compris, c'est que nbjMois(1, 2020) renvoie 31 par exemple. Dans ce cas là, pour connaître le nombre de jours écoulés depuis le 15 septembre par exemple, il te suffit d'additionner le nombre de jours de janvier, puis de février, ..., jusqu'en août (ce que tu peux faire avec ta fonction nbjMois), puis compter les jours de septembre, ce qui est tout simplement donné par le jour du mois (ici 15).

Est-ce clair ? Si oui, est-ce que tu vois comment le programmer ?

@Freddy : pour ces histoires de jours de la semaine, il me semble que Conway avait mis une méthode avec des calculs assez simple pour déterminer cela (quelques congruences, rien de plus méchant) ...

Hors ligne

#24 02-07-2020 10:55:17

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 943

Re : python, fonction produit

Bonjour, ,

@valoukanga
Chouette ! Avec freddy et toi, on va être 3 utilisateurs réguliers !

Alors, je vais donc m'abstenir provisoirement de publier ma solution, même si je ne crois plus au retour de Tuidima...
Mon calendrier perpétuel où je réinvente la roue à cause du désaccord pour les premières années du 1err millénaire :

#!/usr/bin/env python
# -*- coding: Latin-1 -*-

def NumJourSemaine(jour,mois,an):
    # 577734  Nombre de jours de reférence entre le 01/01/0001 et le 04/10/1582
    JoursEcoulesAnnee=[0,31,59,90,120,151,181,212,243,273,304,334]
    if an<1582:
        if an<12:
            nb_ec=(an-1)*365+JoursEcoulesAnnee[mois-1]+jour-1
        else:
            nb_ec=4015+(an-12)*365+JoursEcoulesAnnee[mois-1]+jour+(an-12)//4
        nbj=577734-nb_ec
        numjour=(4-nbj)%7
    elif an==1582:
        if mois <10 or (mois==10 and jour<=4):
            nbj=577734-(JoursEcoulesAnnee[mois-1]+jour-1)
            numjour=(4-nbj)%7
        elif (mois==10 and jour>14)or mois>10:
            nbj=30*(mois==11)+jour-15*(mois==10)          
            numjour=(5+nbj)%7
    else:
        nbj=0
        for j in range(1583,an):
            nbj+=365+((j%4==0 and j%100!=0) or j%400==0)
        nbj+=JoursEcoulesAnnee[mois-1]+jour+(((an%4==0 and an%100!=0) or an%400==0)and mois>2)  
        numjour=(5+nbj)%7  
    return numjour,jour,mois,an

def teste_jours(mois,jour):
    ok=0
    if mois in [4,6,9,11]and jour>30:
        print (mois,"est un mois de 30 jours")
        recommence()
    elif mois in [1,3,5,7,8,10,12] and jour >31:
        print ("Les mois ont 31 jours maximum.")
        recommence()
    else:
        ok=1
    return ok

def recommence():
    print ("Veuillez recommencer s'il vous plaît")
    print()
   
Jours = ["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"]
Mois = ['janvier','février','mars','avril','mai','juin','juillet','août',
      'septembre','octobre','novembre','décembre']
while 1:
    ok=0
    while not ok:
        ##### Date à écrire impérativement au format jj/mm/aaaa
       
        Date=input("Entrez votre date sous la forme mm/jj/aaaa : ")
   
        ########################################  
        if not (Date[2] == "/" and Date[5]=="/"):          
            print ("Les / ne sont pas au bon endroit ou manquants.")
            recommence()
        else:
            try:
                jour,mois,an=int(Date[:2]),int(Date[3:5]),int(Date[6:])
            except ValueError:
                print ("Entrée incorrecte : des nombres sont attendus.")
                recommence()      
            else:
                if mois<1 or mois>12:
                    print ("N° de mois incorrect.")
                    recommence()
                else:
                    if an<1:
                        print ("Année antérieure à l'an 1.")
                        recommence()
                    elif an>0 and an<12:
                        if mois==2 and jour>28:
                            print ("Pas d'année bissextile de l'an 1 à l'an 11.")
                            recommence()
                        else:
                            ok=teste_jours(mois,an)
                    elif an>12 and an<1582:
                        if jour==29 and (mois==2 and an%4!=0):
                            print ("L'année",an,"n'est pas une année bissextile.")
                            recommence()
                        else:
                            ok=teste_jours(mois,jour)
                    elif an==1582:
                        if jour==29 and (mois==2 and an%4!=0):
                            print("L'année",an,"n'est pas une année bissextile.")
                            recommence()
                        elif mois==10 and (jour>4 and jour<15):
                            print ("Ce jour de l'année 1582 n'a pas existé.")
                            recommence()
                        else:                          
                            ok=teste_jours(mois,jour)
                    else:
                        if jour==29 and (mois==2 and not((an%4==0 and an%100!=0) or an%400==0)):
                            print("L'année",an,"n'est pas une année bissextile.")
                            recommence()
                        else:
                            ok=teste_jours(mois,jour)
    print()
    print ("       Le", Date)
    njs,jour,mois,an=NumJourSemaine(jour,mois,an)
    print ("     est en fait le")
    print (Jours[njs],str(jour)+"er"*(jour==1), Mois[mois-1], an)
    print ()
    while 1:
        rep=input("(S)top ou (E)ncore (Répondre avec e,E,s ou S) ? : ").upper()
        if rep in "ES":
            print ()
            break
        else:
            recommence()
    if rep == "S":
        print()
        print ("Au revoir !")
        break

Je réinvente la roue : Python possède notamment un module calendar :

>>> from calendar import weekday
>>>
>>> NomsJoursSemaine=["Lundi", "Mardi", "Mercredi", "Jeudi","Vendredi","Samedi","Dimanche"]
>>> print(NomsJoursSemaine[weekday(2019,7,14)])
Dimanche

Le 14 juillet 2019 était donc un dimanche...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#25 02-07-2020 12:01:19

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : python, fonction produit

Salut,

je pense que l'acquisition d'un langage de programmation passe par la construction de pgm qui, certes, ont déjà été écrits par d'autres mais aident précisément à s'améliorer. J'ai vu des choses écrites par yoshi en 2014, dans une discussion avec un intervenant qui a disparu depuis, mais je n'ai même pas cherché à lire, je vais d'abord essayer de "voir" le problème, puis voir comment j'aurais codé.
Le seul truc que je sais est par exemple, de partir du premier janvier d'une année fixée, par exemple 1900. Je crois que c'était un dimanche, supposons que c'est vrai.
Donc, à partir de là, le reste de la division par 7 du nombre de jours écoulés par rapport à cette date me donne des informations. Par exemple, si c'est 2, je sais que c'est un lundi. Et on déroule le tapis sauf qu'il faut intégrer le fait qu'une année est formée de 52 semaines de 7 jours de sorte qu'il y a un décalage naturel de 1, voire 2 jours pour les années bissextiles, pour chaque année écoulée à partir de cette date. Et au bout d'un certain temps, on doit revenir à la case départ.
C'est ça je pense le petit jeu à coder avec un maximum de simplicité.
Je vais voir, je suis actuellement à faire du VBA sur des trucs pros un peu moins ludiques.


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

Pied de page des forums