Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

Python aucun résultat

Posté par
linou31
10-05-22 à 19:01

Bonjour et tout d'abord merci d'avance à tous.
Je suis en train d'aider ma cousine mais le programme python s'exécute sans retourner de résultats
Voici le programme donné dans le dm par le professeur:
from random import*
def distance(n):
       c=0
       for i in range(n)
               a=-random()
               b=random()
               if b-a<0.5 :
                   c=c+1
       f=c/n
       return(f)

il s'agit de trouver la probabilité pour que la distance ab soit inférieure à 0.5.Je dois l'exécuter pour n= 100,500,1000 et 2000 .Je l'ai bien tapé dans ma calculatrice mais quand j'exécute rien ça m'écrit juste la première ligne.
Merci beaucoup

Posté par
carpediem
re : Python aucun résultat 10-05-22 à 19:15

salut

il manque les deux points à la ligne "for ..."

que fais-tu pour l'exécuter ? que tapes-tu exactement ?

Posté par
linou31
re : Python aucun résultat 10-05-22 à 19:32

Cc j'ai oublié en recopiant désolée
J'ai remplacé n par ses valeurs et mis les intervalles à a et b mais rien il faut dire que je débute aussi car mes années lycée je n'ai pas abordé ce sujet...
Je me débrouille d'habitude mais là je bloque

Posté par
carpediem
re : Python aucun résultat 10-05-22 à 20:23

tu ne réponds pas à ma question ...


d'autre part je vois aussi un moins dans la ligne a = ...

Posté par
linou31
re : Python aucun résultat 10-05-22 à 20:53

Ben à la place de n je mets 100 puis à a (-1,0) et à b (0,1) voilà.
oui c'est écrit de cette façon dans l'énoncé.
Désolée je n'arrive pas à le mettre...

Posté par
carpediem
re : Python aucun résultat 10-05-22 à 20:58

rien compris ...

carpediem @ 10-05-2022 à 19:15

que fais-tu pour l'exécuter ? que tapes-tu exactement ?

Posté par
linou31
re : Python aucun résultat 10-05-22 à 21:11

je tapes tout le programme mais à la place de n je mets ses valeurs (100,500,1000,2000) puis a=-random(-1,0) et b=random(0,1)
puis j'appuie sur run

ex:
from random import*
def distance(n)
       c=0
      for i in range(100):
             a=-random(-1,0)
             b=random(0,1)
             if b-a<0,5 :
                  c=c+1
     f=c/100
     return(f)

voilà

Posté par
linou31
re : Python aucun résultat 10-05-22 à 21:13

carpediem @ 10-05-2022 à 20:58

rien compris ...

carpediem @ 10-05-2022 à 19:15

que fais-tu pour l'exécuter ? que tapes-tu exactement ?

Désolée comme j'ai dit je n'ai jamais appris ça au lycée en bac s option maths

Posté par
carpediem
re : Python aucun résultat 10-05-22 à 21:59

ok pour le script !!

.... enfin non ce n'est pas 100 mais n !!!

mais ensuite que tapes-tu ??

Posté par
linou31
re : Python aucun résultat 10-05-22 à 22:03

carpediem @ 10-05-2022 à 21:59

ok pour le script !!

.... enfin non ce n'est pas 100 mais n !!!

mais ensuite que tapes-tu ??

ah ok désolée je n'ai jamais appris c'est pour aider...
j'ai essayé en laissant n mais en le définissant en dessus de c par n=100 mais aucune réponse également

je ne tape rien de plus juste run???
il faut ajouter une fonction?

Merci de m'aider j'apprends en même temps du coup c'est gentil

Posté par
carpediem
re : Python aucun résultat 10-05-22 à 22:06

pour qu'une fonction puisse s'exécuter il faut l'appeler !!!

et ta cousine doit savoir cela ... sinon elle le trouvera dans son livre ...

Posté par
linou31
re : Python aucun résultat 10-05-22 à 22:09

elle me dit que non justement c'est pour ça que j'ai demandé de l'aide et ainsi j'apprends en même temps comme dans l'énoncé c'est juste mis d'exécuter le programme... c'est chaud quand même pour des secondes lol puis je vais dire la dernière fois il y avait plein d'erreurs dans l'énoncé du dm et des questions demandées!!!

si tu peux m'expliquer ça serait gentil

Posté par
mathafou Moderateur
re : Python aucun résultat 11-05-22 à 08:14

Bonjour,

évidement que sans cours de base sur ce qu'est la programmation en général et avec Python en particulier c'est quasi impossible à deviner !
on ne programme pas, on "bidouille jusqu'à ce que ça marche "par hasard"

def truc(...): etc
définit la fonction truc et ne fait que la définir et rien d'autre
aucun calcul n'est effectué du tout.

comme le dit carpediem pour qu'un calcul soit effectué avec cet fonction il faut écrire un appel à cette fonction
cela se fait en écrivant truc(valeur) à chaque fois que l'on veut l'exécuter

exemple simple

def truc(n):
   return n+1

# invocations, utilisations de cette fonction 
print(truc(1)+truc(2))

dans la dernière ligne j'invoque deux fois la fonction truc, une fois avec la valeur 1, ce qui donne le résultat 2, truc(1) vaut 2
et une fois avec la valeur 2 ce qui donne 3, truc(2) = 3
puis j'ajoute ces deux valeurs ce qui donne 5
et finalement j'affiche le résultat par la fonction prédéfinie print, ce qui affiche 5

bien faire attention à l'indentation
tout ce qui est dans la définition de la fonction est indenté (espaces en début de ligne)
puis après je reviens à l'indentation 0 pour la suite du programme (dont entre autres la/les utilisation(s) de cette fonction pour faire un calcul effectif)

autre "piège"
le "n" dans la définition est en fait une variable muette car son existence est réduite uniquement au sein de la fonction elle même

si j'écris
n= 100
def truc(n):
   return n+1

print(truc(10), truc(n))


le "n = 100" n'a rigoureusement aucune influence sur la fonction, le n de n=100 est une variable globale
comme dans la définition de truc on a aussi un n défini par le truc(n) ce n là est une variable locale à la fonction
ces deux variables n sont bien séparés et totalement indépendantes.
le truc(n)" dans le print équivaut à un truc(100) puisque n (global) vaut 100, inchangé par l'exécution précédente truc(10) de la fonction qui ne modifie que sa variable locale n à elle
si dans la définition de la fonction j'écris n = 5, cela ne modifiera pas du tout la variable globale qui restera à 100
et par ailleurs cela reviendra à ignorer la valeur du paramètre d'appel de la fonction
avec un "n = 5" dans la définition de truc
un appel à truc(3) ignorera la valeur 3, qui sera "écrasée" par le 5 du n = 5

enfin et finalement :
avec Python il faut distinguer deux choses fondamentalement différentes
le script, défini dans un module, qui sera exécuté avec le bouton "run"
(rappel un def ne fait que définir !
exécuter le "def" n'exécute pas les instructions qui composent la fonction !)

et
la console qui est là où on tape des commandes directement et immédiatement exécutées

si dans la console je tape 2+3 il affiche le résultat de cette commande : 5
si dans la console, après avoir exécuté (run) le module, je tape truc(10) il affiche le résultat de l'exécution de truc avec cette valeur10 , ce qui affiche 11

avec tout ça sur cet exemple d'une fonction truc, tu devrais comprendre ce qui ne va pas dans tes manips.

Posté par
linou31
re : Python aucun résultat 11-05-22 à 09:43

*** citation intégrale inutile supprimée***

Merci beaucoup je vais reprendre ça au calme ça me rappelle l'enfer du Pascal où je crée des programmes au pif mdrrr

je n'ai jamais appris et comme dans le dm il n'a pas mentionné de modifier ou de compléter le programme je n'ai jamais pensé qu'il manquait un truc. J'espère réussir sinon tant pis je lui demanderais la correction pour comprendre!!

un grand merci

Posté par
mathafou Moderateur
re : Python aucun résultat 11-05-22 à 10:07

comme je le disais vers la fin
il y a deux choses
"le programme" : il n'y a aucune obligation  d'y modifier quoi que ce soit ici

la console
dans laquelle une fois le programme lancé on peut  taper des commandes pour appeler  la fonction qui a été définie (et seulement définie) par l'exécution du "programme"

Posté par
linou31
re : Python aucun résultat 11-05-22 à 10:12

*modération* >citation inutile supprimée*
Il faut quand même ajouter " print" pour avoir un résultat ?

Posté par
mathafou Moderateur
re : Python aucun résultat 11-05-22 à 10:22

non
dans la console quand on tape une expression il affiche directement la valeur de cette expression

tu peux avoir ça (Python installé sur le PC, aspect pouvant varier selon les moutures de Python ou sur un Python en ligne dans un site web)

Python aucun résultat

(arrête de citer, ça alourdit la discussion, pour répondre c'est uniquement "réponse" et jamais le bouton "citer" Python aucun résultat
il ne sert que, en l'utilisant à bon escient, pour citer des morceaux de messages dans des cas exceptionnels)

Posté par
mathafou Moderateur
re : Python aucun résultat 11-05-22 à 10:25

* "non" je complète :

non, pas "il faut" mais "on peut"

Posté par
linou31
re : Python aucun résultat 11-05-22 à 10:40

Désolée ça arrive quand je réponds sur mon téléphone portable...
Sur ma calculatrice justement j'ai beau mettre dans la console ça me retourne la prémiere ligne from random...
Je vais essayer de nouveau
Là j'ai modifié légèrement et j'ai des résultats
Je vais reprendre tes explications pour mieux comprendre...
C'est pour ma filleule qui est en seconde moi malgré mon master je n'ai pas appris je fais autodidacte

Posté par
linou31
re : Python aucun résultat 11-05-22 à 11:11

Math en tout cas merci beaucoup j'ai tout compris et merci pour ta patience.
Carpediem merci d'avoir essayé.
Exercice réussi

Posté par
mathafou Moderateur
re : Python aucun résultat 11-05-22 à 11:16

je n'ai aucune idée de "Python sur calculette" (vu que je n'ai aucune calculette)
en particulier de la distinction sur celles ci entre la définition d'un programme, son exécution et l'exécution directe de commandes.

je préconise fortement d'utiliser un véritable Python
si on ne veut pas l'installer sur PC, il y a des sites WEB pour faire du Python correct en ligne.
par exemple (le premier qui me tombe sous la main)
le programme est défini dans la fenêtre de gauche (ne pas oublier de le lancer !) et la console est dans la fenêtre de droite.

Python aucun résultat

(nota avec n = 100 quand on relance plusieurs fois on obtient des résultats assez différents
>>> distance(100)
0.08
>>> distance(100)
0.15
>>> distance(100)
0.14
>>> distance(100)
0.13
>>> distance(100)
0.17
>>> distance(100)
0.14

pour avoir une valeur plus fiable de la fréquence il faudrait faire plusieurs milliers de tirages et pas seulement 100

>>> distance(10000)
0.1275
>>> distance(10000)
0.1212
>>> distance(10000)
0.1255
>>> distance(10000)
0.1222
>>>

exercice :
compléter le programme par une boucle qui appelle plusieurs fois la fonction et qui calcule l'écart type ...

Posté par
linou31
re : Python aucun résultat 11-05-22 à 12:32

oui j'avais déjà répondu aux questions dans la partie 1 qui amène à ses conclusions inévitablement.
En tout cas un grand merci j'ai réussi et j'ai retrouvé les mêmes résultats (enfin dans le même ordre de grandeur) car cette nuit j'ai fait un programme pour avoir la valeur de c uniquement et j'avais fait f=c/n manuellement vu qu'il est demandé uniquement de remplir un tableau à doubles entrées n et f

la dernière question est uniquement la probabilité d'avoir la distance ab inférieure à 0.5

Posté par
mathafou Moderateur
re : Python aucun résultat 11-05-22 à 13:36

nota :
il est très fortement recommandé (voire souvent indispensable) de donner des énoncés complets et mot à mot pour avoir le contexte et ce qu'on demande vraiment et dans quel but

en tout cas pour avoir un " tableau à doubles entrées n et f", faire le calcul manuel de c/n consiste essentiellement à considérer que le programme qu'on a eu tant de mal à faire marcher ne sert en fait à rien !
il suffit (faut) de lancer autant de fois que l'on veut la fonction en ligne de commande pour les valeurs de n voulues et ça donne les (des) valeurs correspondantes de f et c'est tout.
par exemple sans rien modifier du tout au programme et une fois le programme lancé (une fois pour toutes, il ne sert que à définir) de taper en ligne de commande successivement :
distance(10)
distance(100)
distance(1000)
distance(10000) ou du même genre

ça donne directement sans aucun calcul manuel les valeurs à mettre dans le tableau (c'est à ça que ça sert de faire un programme : c'est à lui de faire les calculs, tous les calculs)

> distance(10)
0.1
> distance(100)
0.14
> distance(1000)
0.111
> distance(10000)
0.1208
etc

et même que si on veut faire faire tout ça automatiquement, il "suffit" de faire une boucle (au niveau de base) qui appelle plusieurs fois distance(...) avec des valeurs différentes de n (ici des puissances de 10) :

for k in range (1,6): # (k varie de 1 à 5 !)
   print("n =",10**k,", f =",distance(10**k)) 

Posté par
carpediem
re : Python aucun résultat 11-05-22 à 19:11

mathafou : python sur calculette (et en tout cas sur numworks) est identique (ou presque) au python "classique" (hormis tout ce qui la gestion/écriture, ... de fichiers)

la seule différence est que la "console d'exécution" ne tient qu'en une ligne

l'écriture d'un script ou l'affichage des résultats tient lui sur l'ensemble de l'écran bien sûr...

Posté par
linou31
re : Python aucun résultat 12-05-22 à 15:11

Merci beaucoup à vous 2. J'ai appris et surtout compris plusieurs choses.

Posté par
carpediem
re : Python aucun résultat 12-05-22 à 17:06

de rien



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1674 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !