J'abonde dans tous ces commentaires, mais aussi dans le fait que mon seul but était d'avoir un code facile et logiquement aisé à suivre.
Ok, là je vais rajouter un peu d’animosité : c’est raté.
Dans les commentaires, il y a par exemple le fait que le choix aléatoire de a et b suffit à créer de l'aléatoire dans l'ordre de la transaction. C'est tout à fait vrai, mais alors, on n'explicite plus le fait qu'on choisit aléatoirement et les acteurs et l'ordre. C'est vrai mais sous entendu.
Ajoute un commentaire dans ton code qui explique pourquoi tu fais les choses de tel ou tel manière (plutôt que de décrire ce que le code fait).
Même chose, j'aime expliciter mes variables. C'est pas nécessaire, mais finalement je trouve que ça clarifie la lecture du code.
Tu utilises plusieurs fois la variable i, tes variable d’index s’appellent a et b, ton tableau de capitaux s’appelle people.
Après, c’est juste des conseils pour faire du Python plus « standard », ça peut t’aider si tu souhaites collaborer avec d’autres personnes, mais tu fais bien ce que tu veux.
Et comme c'est du commentaire (enfin ça se met normalement en commentaire au début) ça n'a aucun effet sur l'interpréteur ; raison pour laquelle je n'ai pas compris la remarque.
Cela dit, ma fonction pays() doit pas être bonne, j’obtiens des résultats qui m’ont l’air bien différent de ton code.
Déjà parce que comme le souligne Moonz<, il y a une erreur dans le code original, et aussi, parce que j’ai fais une typo en passant les index et non pas les valeurs :
--- a 2021-07-20 14:12:27.830368254 -0400+++ b 2021-07-20 14:12:17.222132326 -0400@@ -42,10 +42,10 @@
# a pays b
if random() > 0.5:
- people[a], people[b] = pays(a, b, base)+ people[a], people[b] = pays(people[a], people[b], base)
# b pays a
else:
- people[b], people[a] = pays(b, a, base)+ people[b], people[a] = pays(people[b], people[a], base)
# final, show the resluts
print(f"Last tranfert base : {base}. {', '.join(str(p) for p in people)}")
Sans aucune animosité, je me permet simplement quelques remarques sur le style du code:
# -*- coding: utf8 -*-
C’est un vieux truc qui n’a plus aucun intérêt.
from random import *
C’est en général pas conseillé d’importer *, il vaut mieux soit importer le module et utiliser module.fonction soit importer les fonctions dont tu as besoin.
people=[]# first setting NB_PEOPLE people with the same amount of money (AMOUNT_START)whilei<NB_PEOPLE:people.append(AMOUNT_START)i+=1
L’initialisation de la variable people peut être réduite à people = [AMOUNT_START] * NB_PEOPLE
i=0a=0b=0base=0
Tu n’as pas besoin d’initialiser toutes tes variables globalement en Python.
while i<NB_LOOP :
En général en Python on utilise des boucles for plutôt que while : for _ in range(0, NB_LOOP + 1): (tu n’utilise pas la variable i, autant ne pas lui donner de nom)
if c>0.5 : # a pays b
Il me semble que les deux blocks font la même chose, avec les signes inversés, du coup une fonction pays(a, b, base) où tu inverse a et b et qui renvoie la nouvelle valeur de a et b devrait faire l’affaire non ?
Genre people[a], people[b] = pays(a, b, base) ou people[b], people[a] = pays(b, a, base).
while i<NB_PEOPLE :
Idem que précédemment, mais en plus tu peux directement itérer sur people for person in people:, mais le mieux c’est surtout d’utiliser str.join() : final = ", ".join(str(p) for p in people).
final="Last tranfert base : " + str(base) +". "
On utilise plutôt les f-string, str.format() ou les %-string plutôt que la concaténation pour faire ça en général : print(f"Last tranfert base : {base}. {', '.join(str(p) for p in people)}")
Après avoir appliquer ça (et utilisé black pour le formatage), ça donne quelque chose comme ça :
#!/usr/bin/python3fromrandomimportrandom,randintNB_PEOPLE=500AMOUNT_START=2000NB_LOOP=5000000RATE=0.2DRATE=0.05defpays(a,b,base):# no advantage for the poorest as no poorestifa==b:a=a-base*RATEb=b+base*RATE# poorest receive the money so add DRATE in the transferelifa>b:a=a-base*(RATE+DRATE)b=b+base*(RATE+DRATE)# poorest pay the money so deduct DRATE in the transferelse:a=a-base*(RATE-DRATE)b=b+base*(RATE-DRATE)returna,bpeople=[AMOUNT_START]*NB_PEOPLEfor_inrange(0,NB_LOOP+1):# select two random peoplea=randint(0,NB_PEOPLE-1)b=randint(0,NB_PEOPLE-1)# compare the capital of both and select the base for the calculation for the next# step (capital of the poorest)ifpeople[a]<people[b]:base=people[a]else:base=people[b]# a pays bifrandom()>0.5:people[a],people[b]=pays(a,b,base)# b pays aelse:people[b],people[a]=pays(b,a,base)# final, show the reslutsprint(f"Last tranfert base : {base}. {', '.join(str(p) for p in people)}")
Cela dit, ma fonction pays() doit pas être bonne, j’obtiens des résultats qui m’ont l’air bien différent de ton code.
Posté par Anonyme .
En réponse au sondage Parlons d'imprimantes 3D….
Évalué à 2.
Dernière modification le 18 juillet 2021 à 20:50.
Freecad est ce qu'il y a de mieux je pense, mais ça reste de la conception…
Arf, si FreeCAD est ce qui existe de mieux en libre, c’est vraiment pas ouf.
J’en avais déjà parlé en commentaire dans un journal assez récent (quelque mois je crois) : en tant que débutant, j’ai essayer de modéliser un « cache » pour le trou où passe les câbles de ma baie et c’était un enfer.
Je voulais juste faire une surface plate de quelque millimètres, avec des « pieds » à chaque coin pour pouvoir le visser à la baie (une table miniature à l’envers en fait) et ça m’a pris énormément de temps. J’arrivais jamais a faire de symétrie ou à ajouter des trou là où je voulais et j’avais l’impression de devoir comprendre le fonctionnement interne de FreeCAD pour la moindre action.
J’ai pas testé d’autres outils, mais j’ai des souvenirs de SolidWorks, quand j’étais au lycée, y a plus de 10 ans et c’était pas aussi complexe.
Le problème du monde du jeux PC, c'est que les éditeurs s'en branlent que la majorité des gens ne veulent/peuvent pas upgrader tous les 3-4 ans et sortent des jeux aux besoins matériels constemment grandissant.
Le fait est que tu n’es pas obligé de faire tourner tous les jeux en ultra et de racheter un PC tous les 3 ans. Je dirais qu’un PC de 5-6 ans fera tourner des jeux récents, au pire, aussi bien qu’une console du même age.
Aussi, tu peux changer les composants de ton PC un par un. Actuellement je joue sur un PC neuf qui tourne avec une nVidia 980 (6-7 ans) et ça fonctionne bien (en attendant de pouvoir passer sur un GPU récent).
Des exemples ? Parce que les seuls « popup » auxquelles je peux penser là comme ça, c’est les « achievements » et encore une fois, ça vient des développeurs du jeux, c’est pas Steam qui les ajoutes tout seul.
Exemple tout bête, si vous ne me croyez pas, un activiste qui va au restaurant, se fait scanner son pass-sanitaire, le restaurateur vérifie et la DGSE est automatiquement au courant.
Ta vache spherique Ton activiste n'utilise pas de téléphone, pas de carte de crédit, il ne passe jamais devant des cameras de vidéosurveillance, rien ?
Je pense que la DGSE a pas besoin du pass sanitaire pour pister les gens qu'elle surveille.
Je tiens à préciser que c’est pas le fait que devnewton soit modérateur qui me dérange, c’est ses propos. Le fait qu’ils soient modérateur est une circonstance aggravante de mon point de vue.
Rappelons que pour Diphtérie, Tétanos, Poliomyélite, c'est (en mode "conseillé" certes car vous êtes sensés être grands et capable de comprendre) un rappel tous les 20 ans (25, 45 ans, 65 ans)
J’avoue que je ne comprends ni ton message, ni celui de Michaël.
Si vous me répondez à moi que ça n’a rien à voir, merci, mais je le sais déjà, c’est pas moi qui fait des analogies dégueulasses dans ce fil.
Par contre, vous êtes complètement passé à côté de mon commentaire, ce que je vous reproche c’est de continuer à « débattre » avec des gens comme papap quand le dixième de ce qu’il dit devrait déjà justifier un permaban.
Tu dis qu’il y des gens font plein de tests PCR pour ne pas se faire vacciner, tu dois donc avoir une source (qui montre qu’il y a effectivement des gens qui font ça) et des chiffres (qui montrent que ça à un impact non négligeable sur le budget de « la collectivité »).
Disclaimer : je ne vis pas en France et j’ai pas regardé Macron à la TV (je ne l’aurai de toute façon pas fait), donc j’ai seulement vu des résumés de ce qui a été annoncé.
Quelle annonce en particulier te pose problème ?
Les tests PCR payants qui semble tellement contre productif.
L’instauration d’un couvre-feu en Martinique et à la Réunion, parce que ça sert à rien à part donner l’impression que le virus se propage uniquement parce que les français sont des enfants irresponsables.
Le revenu d’engagement pour les jeunes qui n’est une mesurette pour sauver les meubles avant les élections et qu’il faut mettre en parallèle avec tout ce que les gouvernents de Macron ont fait contre leur jeunesse.
Non, c’est loin d’être aussi simple et ça n’a strictement rien à voir avec les SJW.
Ton discours se résume à ce meme et c’est consternant :
Je note au passage que SJW est soit disant un terme que tu n’aimes pas, mais que tu l’emploies toutes les deux phrases.
Au delà de ça, c’est un autre point de la vidéo que je ciblais : celle où il explique comment les groupes d’extrêmes droites ont changé leurs méthodes de recrutement avec Internet, pour passer à un mode « décentralisé » ou c’est plus vraiment possible de cibler un groupe précis quand un incel fait une tuerie de masse dans une école aux États-Unis.
C’est exactement ce sur quoi 4chan surfe et c’est l’argumentaire que tu propages (à mon avis à dessin) quand tu dis que « 4chan c'est clairement pas une communauté unie ».
4chan c'est clairement pas une communauté unie, et dire que les gents qui on harcelé le mainteneur de Tenacity c'est les même que les développeurs de Sneedacity c'est un sophisme par association, qui se bases sur le fait que les 2 viennes du même site (et possiblement des même fils de discutions).
[^] # Re: Python
Posté par Anonyme . En réponse au journal Un article de "Pour la science" m'ayant amené à coder pour une petite vérification perso.... Évalué à 3. Dernière modification le 21 juillet 2021 à 05:18.
Ok, là je vais rajouter un peu d’animosité : c’est raté.
Ajoute un commentaire dans ton code qui explique pourquoi tu fais les choses de tel ou tel manière (plutôt que de décrire ce que le code fait).
Tu utilises plusieurs fois la variable
i
, tes variable d’index s’appellenta
etb
, ton tableau de capitaux s’appellepeople
.Après, c’est juste des conseils pour faire du Python plus « standard », ça peut t’aider si tu souhaites collaborer avec d’autres personnes, mais tu fais bien ce que tu veux.
[^] # Re: Python
Posté par Anonyme . En réponse au journal Un article de "Pour la science" m'ayant amené à coder pour une petite vérification perso.... Évalué à 3.
On peut aussi ajouter des annotations de types, d’ailleurs on devrait tout le temps le faire.
C’est le truc qui m’embête le plus avec Python, qu’il soit faiblement/dynamiquement typé et que même quand tu annotes, l’interpréteur s’en fout.
[^] # Re: Python
Posté par Anonyme . En réponse au journal Un article de "Pour la science" m'ayant amené à coder pour une petite vérification perso.... Évalué à 3.
Justement, si, ça a un effet sur l’interpréteur. Et comme utf-8 est le défaut, ça n’a aucun intérêt.
C’est juste un de ces vieux cargo cultes qu’on se traine, tout le monde fait comme ça, je vais faire pareil.
[^] # Re: Python
Posté par Anonyme . En réponse au journal Un article de "Pour la science" m'ayant amené à coder pour une petite vérification perso.... Évalué à 3.
13 ans
Parce que l’encodage par défaut en Python est UTF-8.
Plus propre de déclarer des variables globales qui n’ont d’intérêt que dans un scope précis ?
[^] # Re: Python
Posté par Anonyme . En réponse au journal Un article de "Pour la science" m'ayant amené à coder pour une petite vérification perso.... Évalué à 3.
Déjà parce que comme le souligne Moonz<, il y a une erreur dans le code original, et aussi, parce que j’ai fais une typo en passant les index et non pas les valeurs :
# Python
Posté par Anonyme . En réponse au journal Un article de "Pour la science" m'ayant amené à coder pour une petite vérification perso.... Évalué à 6.
Sans aucune animosité, je me permet simplement quelques remarques sur le style du code:
C’est un vieux truc qui n’a plus aucun intérêt.
C’est en général pas conseillé d’importer
*
, il vaut mieux soit importer le module et utilisermodule.fonction
soit importer les fonctions dont tu as besoin.L’initialisation de la variable
people
peut être réduite àpeople = [AMOUNT_START] * NB_PEOPLE
Tu n’as pas besoin d’initialiser toutes tes variables globalement en Python.
En général en Python on utilise des boucles
for
plutôt quewhile
:for _ in range(0, NB_LOOP + 1):
(tu n’utilise pas la variablei
, autant ne pas lui donner de nom)Il me semble que les deux blocks font la même chose, avec les signes inversés, du coup une fonction
pays(a, b, base)
où tu inverse a et b et qui renvoie la nouvelle valeur de a et b devrait faire l’affaire non ?Genre
people[a], people[b] = pays(a, b, base)
oupeople[b], people[a] = pays(b, a, base)
.Idem que précédemment, mais en plus tu peux directement itérer sur people
for person in people:
, mais le mieux c’est surtout d’utiliserstr.join()
:final = ", ".join(str(p) for p in people)
.On utilise plutôt les f-string,
str.format()
ou les %-string plutôt que la concaténation pour faire ça en général :print(f"Last tranfert base : {base}. {', '.join(str(p) for p in people)}")
Après avoir appliquer ça (et utilisé black pour le formatage), ça donne quelque chose comme ça :
Cela dit, ma fonction
pays()
doit pas être bonne, j’obtiens des résultats qui m’ont l’air bien différent de ton code.[^] # Re: Moyennement utile.
Posté par Anonyme . En réponse au sondage Parlons d'imprimantes 3D…. Évalué à 2. Dernière modification le 18 juillet 2021 à 20:50.
Arf, si FreeCAD est ce qui existe de mieux en libre, c’est vraiment pas ouf.
J’en avais déjà parlé en commentaire dans un journal assez récent (quelque mois je crois) : en tant que débutant, j’ai essayer de modéliser un « cache » pour le trou où passe les câbles de ma baie et c’était un enfer.
Je voulais juste faire une surface plate de quelque millimètres, avec des « pieds » à chaque coin pour pouvoir le visser à la baie (une table miniature à l’envers en fait) et ça m’a pris énormément de temps. J’arrivais jamais a faire de symétrie ou à ajouter des trou là où je voulais et j’avais l’impression de devoir comprendre le fonctionnement interne de FreeCAD pour la moindre action.
J’ai pas testé d’autres outils, mais j’ai des souvenirs de SolidWorks, quand j’étais au lycée, y a plus de 10 ans et c’était pas aussi complexe.
[^] # Re: jeux certifiés
Posté par Anonyme . En réponse au lien SteamDeck ordinateur/console portable par Valve (fin 2021). Évalué à 4.
Faut pas oublier que les consoles sont vendues à perte.
Avec le coût des jeux, le rapport longévité/prix est probablement équivalent, si on rajoute la qualité il est probablement en faveur des PC.
La preuve avec Cyberpunk 2077, qui tourne (tournait ?) super mal sur PS4.
[^] # Re: jeux certifiés
Posté par Anonyme . En réponse au lien SteamDeck ordinateur/console portable par Valve (fin 2021). Évalué à 7.
Le fait est que tu n’es pas obligé de faire tourner tous les jeux en ultra et de racheter un PC tous les 3 ans. Je dirais qu’un PC de 5-6 ans fera tourner des jeux récents, au pire, aussi bien qu’une console du même age.
Aussi, tu peux changer les composants de ton PC un par un. Actuellement je joue sur un PC neuf qui tourne avec une nVidia 980 (6-7 ans) et ça fonctionne bien (en attendant de pouvoir passer sur un GPU récent).
[^] # Re: Architecture de type PC sous Arch Linux
Posté par Anonyme . En réponse au lien SteamDeck ordinateur/console portable par Valve (fin 2021). Évalué à 5.
Ça, ça dépend des jeux, pas de Steam.
Des exemples ? Parce que les seuls « popup » auxquelles je peux penser là comme ça, c’est les « achievements » et encore une fois, ça vient des développeurs du jeux, c’est pas Steam qui les ajoutes tout seul.
[^] # Re: Soyons précis
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à 6.
Ta vache spheriqueTon activiste n'utilise pas de téléphone, pas de carte de crédit, il ne passe jamais devant des cameras de vidéosurveillance, rien ?Je pense que la DGSE a pas besoin du pass sanitaire pour pister les gens qu'elle surveille.
[^] # Re: Maintenant on a des outils de message queuing comme RabbitMQ ou MQTT ....
Posté par Anonyme . En réponse au journal fail2ban : mutualiser ma blacklist entre mes serveurs. Évalué à 4.
Quand je travaillais chez OVH, on utilisait serf pour propager un message et exécuter iptables.
[^] # Re: Il faut assumer ses choix
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à -1.
Je tiens à préciser que c’est pas le fait que devnewton soit modérateur qui me dérange, c’est ses propos. Le fait qu’ils soient modérateur est une circonstance aggravante de mon point de vue.
# Réaction de Bortzmeyer
Posté par Anonyme . En réponse au lien Ce site montre à quel point les moteurs de recherche ne sont pas neutres et impartiaux. Évalué à 8.
Je soupçonne que @Numerama construit un mannequin de paille avant de l'affronter victorieusement.
[^] # Re: Il faut assumer ses choix
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à -3.
Ah, ça y est !
Encore un pas et ça va parler de SJW et de cancel culture.
[^] # Re: Il faut assumer ses choix
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à 5.
Déjà, on est pas sur Reddit, i n’y a pas de différence quand tu postes en tant que modérateur et en tant que citoyen lambda du site.
En plus de ça, l’injonction à séparer l’œuvre de l’artiste c’est encore un autre moyen de ce dédouaner quand on a dit ou fait une connerie.
[^] # Re: Soyons précis
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à 6.
D’ailleurs c’est marrant parce que c’est pas partout pareil, ici, au Québec, c’est une dose quand t’es enfant puis une dose à 50 ans.
[^] # Re: Il faut assumer ses choix
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à 5.
Cool, on avait déjà les anti-vax, mais maintenant on a carrément un modérateur qui vient nous expliquer que l’eugénisme est une bonne idée. Super.
[^] # Re: quelques commentaires
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à 6.
J’avoue que je ne comprends ni ton message, ni celui de Michaël.
Si vous me répondez à moi que ça n’a rien à voir, merci, mais je le sais déjà, c’est pas moi qui fait des analogies dégueulasses dans ce fil.
Par contre, vous êtes complètement passé à côté de mon commentaire, ce que je vous reproche c’est de continuer à « débattre » avec des gens comme papap quand le dixième de ce qu’il dit devrait déjà justifier un permaban.
[^] # Re: quelques commentaires
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à 3.
Lui répéter que ce qu’il dit est moisi ça a bien marché jusque là. Continuez, c’est visiblement la bonne façon de gérer les complotistes.
[^] # Re: Soyons précis
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à 4. Dernière modification le 13 juillet 2021 à 16:14.
Tu dis qu’il y des gens font plein de tests PCR pour ne pas se faire vacciner, tu dois donc avoir une source (qui montre qu’il y a effectivement des gens qui font ça) et des chiffres (qui montrent que ça à un impact non négligeable sur le budget de « la collectivité »).
[^] # Re: Soyons précis
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à 7.
Des chiffres et des sources pour cette affirmation ?
[^] # Re: Soyons précis
Posté par Anonyme . En réponse au journal Petite question sur l'immunité collective. Évalué à 2.
Disclaimer : je ne vis pas en France et j’ai pas regardé Macron à la TV (je ne l’aurai de toute façon pas fait), donc j’ai seulement vu des résumés de ce qui a été annoncé.
[^] # Re: Avancement de Sneedacity
Posté par Anonyme . En réponse au lien Deux forks d’Audacity (dont un par 4chan) sont dans un bateau… qu’est-ce qui peut mal finir ?). Évalué à 0.
Non, c’est loin d’être aussi simple et ça n’a strictement rien à voir avec les SJW.
Ton discours se résume à ce meme et c’est consternant :
Je note au passage que SJW est soit disant un terme que tu n’aimes pas, mais que tu l’emploies toutes les deux phrases.
Au delà de ça, c’est un autre point de la vidéo que je ciblais : celle où il explique comment les groupes d’extrêmes droites ont changé leurs méthodes de recrutement avec Internet, pour passer à un mode « décentralisé » ou c’est plus vraiment possible de cibler un groupe précis quand un incel fait une tuerie de masse dans une école aux États-Unis.
C’est exactement ce sur quoi 4chan surfe et c’est l’argumentaire que tu propages (à mon avis à dessin) quand tu dis que « 4chan c'est clairement pas une communauté unie ».
[^] # Re: Avancement de Sneedacity
Posté par Anonyme . En réponse au lien Deux forks d’Audacity (dont un par 4chan) sont dans un bateau… qu’est-ce qui peut mal finir ?). Évalué à 3.
C’est exactement sur ça qu’ils se basent pour radicaliser les Normies.