C'est normal, soit tu exécutes le fichier depuis le terminal avec python mon_script.py, soit tu l’exécutes depuis ton éditeur et il ne faut alors pas donner la commande puisque tu es dans l'idle, donc dans un environnement python
Version imprimable
C'est normal, soit tu exécutes le fichier depuis le terminal avec python mon_script.py, soit tu l’exécutes depuis ton éditeur et il ne faut alors pas donner la commande puisque tu es dans l'idle, donc dans un environnement python
Merci
Au départ, je voulais vous répondre : je ne comprends rien à vos réponses.
Mais après avoir vu une vidéo et relu mon tuto, j'ai compris ce que vous vouliez dire.
En fait, faut passer par le MSD => Invite de commande => qui serait le VRAI terminal ?
Il ne faut pas confondre le terminal system (que tout ordinateur possède, indépendamment du système d'exploitation, et dans lequel, si python est installé on peut exécuter un script python en faisant
python mon_script.py
en prenant soin que votre script soit dans le dossier courant (si vous êtes pas au point là dessus, il faut ouvrir un tuto commande unix ou windows https://windows.developpez.com/cours...e/?page=page_4).
Après il y a le terminal python.
Si dans votre terminal système vous taper juste python, vous aller basculer dans un terminal python. Et la vous pourrez taper du python directement. Vous vous en rendrez compte car vous verrez la version de python chargée, et le prompt ensuite aura changé.
Faire quit() pour revenir au terminal system.
Si maintenant vous utiliser un IDE, qui vous offre la possibilité d'écrire votre script dans ce logiciel, et offre aussi un raccourci pour l'éxécuter via F5 par exemple, et bien dans ce cas votre IDE intègre directement un terminal python, et vous éxécutez via F5.
Et forcément si vous taper
python mon_script.py
dans le terminal python au lieu du terminal system, ca va pas bien se passer.
Bonjour
Il y a 2 façons d'utiliser Python
- entrer dans "idle". Ca t'ouvre une fenêtre fond blanc dans laquelle tu tapes les instructions Python une à une qui sont exécutées directement. C'est pratique pour tester les exemples à 4/5 lignes mais ensuite ça devient difficile surtout si tu te trompes sur la 5° ligne (obligé de tout retaper)
- créer un script Python qui pourra être exécuté ensuite par Python. Là tu n'entres pas dans idle, tu prends un éditeur quelconque ("notepad", "notepad++", "vi", etc) dans lequel tu écris ton code entier. Tu sauvegardes ce code dans un fichier nommé ".py" par convention (ex "toto.py") puis tu ouvres une fenêtre terminal (MsDos sous Windows, shell sous Linux, ce que toi tu nommes "vrai" terminal et qui n'est en fait que le terminal de ton OS), tu vas là où le fichier "toto.py" se trouve et tu tapes "python toto.py" pour demander à Python d'exécuter le script (sous réserve que le binaire "python" soit inclus dans ton PATH mais c'est le cas par défaut sous Linux et les Python modernes le font tout seul quand on les installe dans Windows)
idle permet aussi d'exécuter un script mais perso je trouve ça façon de faire un peu lourde (surtout si ensuite tu commences à créer plusieurs scripts qui s'utilisent les uns les autres).
Merci,
je vais essayer de digérer tout ça :)
Bonjour,
La programmation ne s'apprend pas en 5 minutes...
On est tous passé par là !
Il y a deux difficultés pour toi qui est débutant,
- Apprendre l'algorithmie (savoir résoudre un problème de manière logique et informatique)
- Apprendre la syntaxe (c'est comme apprendre pour la première fois une langue littéraire)
Autant en anglais par exemple, tu te mélanges dans les mots on pourra peut-être comprendre ta phrase et ne pas te répondre à côté de la plaque, en langage informatique, si tu te trompes l'interpréteur Python ne le comprendra pas, il t'indiquera le type d'erreur et l'endroit où cette erreur intervient.
C'est ce dernier point que tu dois apprendre à maîtriser en faisant des recherches et en faisant des petits tests sur ton interpréteur python.
N'hésite pas à poser des questions, mais ce qui te restera, se sont les recherches par toi même, il faut prendre le temps de comprendre, ne pas aller trop vite et surtout apprendre de ses erreurs.
Quand j'ai commencé Python, personnellement c'était mon 1er langage, j'avais pas d'idée par où commencer, j'ai donc été m'inscrire sur un forum et je regardais la problématique des membres.
Je reprenais leur ligne de code, je reproduisais le problème sur un interpréteur, je cherchais l'erreur sur le net, et quand j'avais une solution, je là testais... et si aucune réponse n'était présente je proposais ma solution.
C'est le meilleur apprentissage en ce qui me concerne, on apprend à
- réfléchir sans le savoir à l'algorithmie du problème
- appréhender les erreurs de syntaxe du langage
- rechercher sur le net en français mais aussi en anglais
C'est un moyen rapide d'entrer dans le bain... mais l'interpréteur était mon meilleur ami, l'éditeur au début perso, ne m'a servi à rien, car pour apprendre, je devais reproduire, réécrire non pas 1x mais des dizaines de fois, pour que ça rentre. Si j'écris 1x, t'es sûr que deux jours après j'ai oublié. En anglais, si je dis le mot 1x, c'est pas pour cela que je vais le connaître à vie, il faut que je l'utilise régulièrement...
Bonne continuation...
Oui, merci fred
je crois que t'as bien résumé ma situation ;)
côté logique, je ne suis pas un crack, mais je peux me débrouiller
c'est vraiment le langage qu'il faut que j'apprenne.
Et c'est super gentil de me dire que je peux revenir poser des questions.
D'ailleurs, j'en ai déjà une autre.
Comme je suis le tuto déjà cité ci-dessus, je n'arrive pas en l'ayant suivi à résoudre un exercice posé qui n'a pas sa solution.
Ecrire un programme qui fait :
*
**
***
****
*****
je peux facilement l'écrire avec les chiffres mais j'ai toujours pas compris comment lui dire d'écrire x fois le même caractère
---
En fait, si je me mets à Python, c'est parce qu'on me dit que c'est le langage le plus simple pour commencer.
Mon but in fine, c'est de réaliser la map que j'ai conçu pour les nombres premiers.
Et peut-être essayer de calculer des gros nombres premiers.
Ainsi que d'essayer de concevoir une IA (selon l'idée d'un biologiste vu que j'ai une formation là-dedans)
Et peut-être un programme de bourse...
=> Grosso modo, même si rien ne fonctionne, j'ai des idées à vouloir mettre en pratique
Donc, je ne sais pas si c'est le langage qu'il faut apprendre. Je n'ai pas envie de mélanger plusieurs langages en même temps. Déjà me concentrer sur le tuto de 400 p sur Python. Ce sera déjà pas mal. ^^
En tout cas, vous êtes sympa.
----
Je préfère continuer d'écrire tous mes problèmes sur le même topic, sinon, j'en créerai plein.
J'espère que ça le fait.
Bonne fin de week-end.
Tu peux commencer par cela :
puis :Code:
1
2 for i in range(5): print('*')
Code:
1
2
3
4 ch = '' for i in range(5): ch = ch + '*' print(ch)
Tu peux créer une fonction basée sur l'exemple de marco056.
Ensuite, Python offre effectivement certains raccourcis syntaxiques ex print("*" * 10).
Euh... là Python risque d'être incompétent. Ce n'est pas qu'il ne saura pas le faire, c'est juste qu'il n'est pas prévu pour le faire. En effet, Python se veut assez universel. Il est assez bon pour pouvoir aborder tout problème informatique mais comme il n'est pas spécialisé pour un problème (ce qui serait fatalement au détriment d'autres trucs) il fait tout mais pas super vite. Et pour calculer de "gros" nombres premiers...
Enfin si tu veux essayer, voici déjà une fonction qui teste si un nombre est/n'est pas premier
Ensuite t'as qu'à essayer de regarder le temps que ça prend pour tester de "gros" nombres avec cette fonction...Code:
1
2
3
4
5
6
7
8
9
10
11 def isPremier(n): if n in (1, 2, 3): return n != 1 if (n%2) == 0: return False i=3 while True: (q, r)=divmod(n, i) if r == 0: return False if q < i: return True i+=2 # while # isPremier()
http://sametmax.com/python-meilleur-...ellent-partout.
Merci
J'ai essayé vos codes, ça fonctionne.
Celui de marco, je le comprends littéralement.
Celui de Sve@r, je ne le comprends pas. Mais je vais tenter par moi-même. Je sais que le tuto l'aborde à un moment donné.
Je viens de tester pour un nombre "relativement" grand, c'est correct dans un premier temps pour ce que je veux faire.
Bonne journée
Les deux codes sont pas comparables, déjà ils ne font pas la même chose, mais le niveau de difficulté n'a rien à voir non plus.
Pour comprendre celui de marco, être débutant suffit.
D'autres solutions existent
Pour celui de Sve@r, il faut des bases supplémentaires dans le langage et dans l'algorithmie, sans compter les problèmes de performance qui peuvent en découler et qui complique encore ce problème.Code:
1
2 for i in range(1, 6): print(i * '*')
Il est trop fort ce marco :D
Oui, c'est le lot des génies que de rester incompris...
Déjà je teste les 3 premiers nombres évidents (on peut éventuellement monter encore un peu avec 5, 7 etc) en sachant que 1 n'est pas premier. Ce test est obligatoire pour 1, 2 et 3 car l'algo ne fonctionne pas pour ces nombres là.
Ensuite j'élimine les pairs (assez évident) pour pouvoir me concentrer sur les impairs. Et pour eux, je regarde si un des nombres impairs inférieurs divise parfaitement ce nombre (reste à 0) et dans ce cas ben il n'est pas premier. La fonction divmod() est intéressante pour ça car elle renvoie à la fois le quotient et le reste (sinon on eut pu faire par les opérateurs classiques division et modulo). Et comme le premier diviseur testé commence à 3, c'est pour ça que l'algo ne fonctionne pas pour 3.
Et si on atteint un certain seuil où le quotient devient plus petit que le diviseur, alors c'est gagné (on gagne donc la moitié des tests). Parce que s'il existe un nombre x qui divise n et qui donne q < x ; alors on aurait fatalement trouvé q qui divise n et qui donne x lors des tests précédents.
Oui après tout dépend de tes besoins concernant le temps de recherche. Mais en tout cas c'est pas avec Python que tu vas pouvoir trouver rapidement du bitcoin. Pour info le dernier nombre premier trouvé vaut 2 ** 82589933 - 1 et fait 24 millions de chiffres... (déjà Python met 10mn rien qu'à le sortir alors avant de vérifier qu'il est/n'est pas premier... :aie:)
:mouarf: :mouarf: :mouarf: