lolop a écrit 3800 commentaires

  • # Correction

    Posté par  (site web personnel) . En réponse au message problème message d'erreur python. Évalué à 4. Dernière modification le 09 mars 2019 à 12:52.

    Bon, ton code fait très programmation "C" avec un tableau de taille fixe dont on gère le nombre d'éléments séparément. En Python on a un type list qui est un conteneur dynamiques, qui dispose des opérateurs/méthodes: t.remove(valeur), del t[index]… et dont on peut connaître le nombre d'éléments len(t).

    Bref, tu fais du C en Python, qui plus est avec un algo très compliqué pour réaliser une opération simple. Mais en restant dans ton code, en ajoutant docstring et commentaires (conseil, fait le, même pour toi, ça permet quand on lit/écrit d'identifier des écarts entre ce qu'on pense que la fonction fait et ce qu'elle fait réellement), ça donnerais:

    def supprimer(t,n,k):
        "Supprime l'élément à l'index k dans t (de taille n) et retourne la nouvelle taille"
        for i in range(k,n-1):
            # On décale les éléments (les anciennes valeurs restent "à droite")
            t[i]=t[i+1]
        return n-1
    
    def supprimerPremiereOccurence(t,n,elt):
        "Supprime la première occurence de elt dans t (de taille n) et retourne la nouvelle taille de t"
        for i in range(n):
            # Recherche la première occurence, et appelle la fonction de suppression
            if t[i]==elt:
                return supprimer(t,n,i)  # Retourne nouvelle taille du tableau
        # Si pas trouvé, la taille du tableau n'a pas changé !!!!!
        return n   # <------------ ton bug était là: si elt n'est pas dans t, tu ne passes pas
                   # par ton return et ça fait que ta fonction sort implicitement avec None,
                   # qui se retrouve stocké dans nbelem, propagé dans n, puis qui provoque une 
                   # comparaison NoneType avec int (n>0) au début de l'itération suivante.
    
    def mystere(t,n,x):
        "Supprime les éléments x de t (de taille n) et retourne la nouvelle taille de t"
        continuer = True
        while n>0 and continuer == True:
            nbelem = supprimerPremiereOccurence(t,n,x)
            if nbelem == n:
                continuer = False
            else:
                n = nbelem
        return n
    
    liData = [2,-7,4,5,12,10,4,2,4,-18]
    print(mystere(liData,len(liData),4))

    Note: Là on fait directement des modifications dans la liste passée en paramètre ; s'il n'y a pas de contrainte on préférera créer une nouvelle liste et la retourner (éviter les effets de bord).

    Et ça se fait même en 1 ligne avec les listes en compréhension:

    >>> liData = [2,-7,4,5,12,10,4,2,4,-18]
    >>> liData2 = [x for x in liData if x!=4]
    >>> liData2
    [2, -7, 5, 12, 10, 2, -18]

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Bon, j'aurais fais ca

    Posté par  (site web personnel) . En réponse au message problème message d'erreur python. Évalué à 2.

    Nan, trois ` pas trois '

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Des outils pour toi

    Posté par  (site web personnel) . En réponse au message problème message d'erreur python. Évalué à 3.

    Tu peux essayer ton script sur Python Tutor, ou encore en mode débogage dans Pyzo (ou autre IDE), tu verras ainsi quelles valeurs sont manipulées, où tu passes dans ton code, et tu pourras apprendre en identifiant ton erreur.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: un None qui apparaît...

    Posté par  (site web personnel) . En réponse au message problème message d'erreur python. Évalué à 3. Dernière modification le 07 mars 2019 à 22:57.

    Et mets en page ton code (voir l'aide mémoire de la syntaxe wiki avec trois ` en bas de la page de rédaction). Car du code Python sans avoir l'indentation… aye.

    # Du code avec coloration syntaxique
    def truc(x):
        return x-1

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # un None qui apparaît...

    Posté par  (site web personnel) . En réponse au message problème message d'erreur python. Évalué à 2.

    Dans supprimerPremiereOccurence, si la condition est fausse, la fonction retourne quoi?

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: moinssage ?

    Posté par  (site web personnel) . En réponse au message piratage de compte Facebook. Évalué à 2.

    Ils ont pris l'outil suivant, 8chan ;-)

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: erreur d'algoritme

    Posté par  (site web personnel) . En réponse au message PYTHON - UNRAR : établir un Thread pour surveiller un Process. Évalué à 4.

    En complément, les fichiers PAR2 (format suivant de Parchive) permettent aussi, en contrepartie d'un peu plus de volume échangé, de reconstruire un des blocs (identifié comme invalide ou carrément manquant) à partir des autres. Ça a été (et c'est encore probablement) utilisé sur Usenet pour le partage de fichiers binaires volumineux.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Si tu veux office365

    Posté par  (site web personnel) . En réponse au message Quelle version linux pour libreoffice. Évalué à 3. Dernière modification le 25 février 2019 à 08:42.

    Salut,

    si ta distribution support snap (un système de packaging "à la windows" où le paquet contient non seulement l'exécutable de l'application, mais aussi toutes les librairies nécessaires dans les versions ad-hoc), il existe LibreOffice as Snap qui permet d'installer une version récente du logiciel.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Son spatial

    Posté par  (site web personnel) . En réponse à la dépêche Quatre programmes pour l’audio. Évalué à 3.

    Pour avoir ces éléments de haut/bas, et avoir une meilleur qualité dans les perceptions de position et de distance, il faut aller vers le HRTF (Head-related Transfer Function), et là c'est une adaptation à chaque morphologie et l'utilisation d'un casque.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # df -h

    Posté par  (site web personnel) . En réponse au message [RÉSOLU]Connexion utilisateur désormais impossible, Mariadb et avahi-daemon ne peuvent plus démarrer. Évalué à 2.

    Ça donne quoi ?

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Page dédiée…

    Posté par  (site web personnel) . En réponse au message Aide firefox chromebook + information. Évalué à 2.

    1) Crouton semble capable de lancer n'importe quel Linux.

    2) XFCE est un des environnements de bureau disponibles sous Linux (celui qui t'apporte l'environnement graphique de base). Comme Gnome ou KDE, mais il est bien plus léger (plus adapté pour une petite machine).

    Pour le réseau, la doc Crouton/Ubuntu indique de penser à installer Network Manager.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Instructions "atomiques"

    Posté par  (site web personnel) . En réponse au message comment marchent les mutex du point de vue du noyau. Évalué à 2.

    Merci.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Instructions "atomiques"

    Posté par  (site web personnel) . En réponse au message comment marchent les mutex du point de vue du noyau. Évalué à 2.

    Disons que s'ils essaient de faire un accès concurrent, par exemple sur la mémoire (le test and set est un accès mémoire atomique), ils sont d'une façon ou d'une autre électroniquement bloqués — je ne sais pas comment ça se traduit au niveau du cœur lui-même, probablement une mise en attente que le bus d'accès mémoire soit accessible (pour ça il faudrait voir l'architecture logique au niveau de l'électronique des processeurs).

    L'information arrive donc quelque part sur chaque cœur au niveau d'une connexion électronique. Dans ce sens, on peut dire que tous les processeurs sont au courant, mais en fonctionnement normal un cœur ne la prend pas en compte dans sa logique.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Instructions "atomiques"

    Posté par  (site web personnel) . En réponse au message comment marchent les mutex du point de vue du noyau. Évalué à 4. Dernière modification le 13 février 2019 à 16:42.

    Piste de recherche: "CPU multicore synchronization"

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Instructions "atomiques"

    Posté par  (site web personnel) . En réponse au message comment marchent les mutex du point de vue du noyau. Évalué à 4. Dernière modification le 13 février 2019 à 16:41.

    Hem, tu devrais creuser un peu le sujet avant d'exprimer ce genre de vérités.

    Il y a obligatoirement des synchros électroniques pour certaines opérations que peuvent faire les cœurs dès lors qu'ils sortent de leur fonctionnement interne (typiquement la prise en main des bus d'adressage pour les accès mémoires). Interne au proc quand on est en multicœur, et éventuellement externe (circuits dédiés) quand on est en multi-CPU.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Instructions "atomiques"

    Posté par  (site web personnel) . En réponse au message comment marchent les mutex du point de vue du noyau. Évalué à 4.

    Dans le sens où elles ne sont pas décomposables. Le test_and_set est une seule instruction qui fixe la valeur en mémoire et retourne la valeur précédente. Une autre tache ne peut pas intercaler une modification de la mémoire entre la lecture et la modification. Donc la tache qui arrive en second voit l'état de la mémoire modifiée par la première (et peut donc en déduire que la ressources est occupée).

    C'est généralement une instruction du processeur, surtout sur les machines multicœurs — il faut assurer l'atomicité de cette opération particulière vis-à-vis de la mémoire entre les différents cœurs.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Quelle différence vs Qt Design Studio ?

    Posté par  (site web personnel) . En réponse à la dépêche Financement participatif pour Akira. Évalué à 3.

    Salut,

    comment Akira se comparera-t-il à Qt Design Studio (qui n'estpas Qt Creator/QML Editor) ?

    (outre la licence qui j'imagine sera plus ouverte côté Akira)

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Source d'information ?

    Posté par  (site web personnel) . En réponse au message Deuxième mouture script multi clock. Évalué à 6.

    il ne peux pas y avoir plus de 10 (de mémoire) variable de classe, que j'ai contourner en créeant des dictionnaires.

    Je veux bien que tu nous donnes la source de cette information, je j'ai jamais rien vu de tel (les espaces de noms en Python sont des dictionnaires, la limite est la mémoire).

    J'ai aussi lu que lambda, map etc.. étaient unpythonic, mais comment mapper les options des commandes si un menu est réalisé par une boucle ? (ici le menu pour supprimer des horloges)

    Pour lambda, ça reste la seule façon de faire des fonctions anonymes, sinon tu peux faire des fonctions locales nommées (déclarées dans une autre fonction) et les utiliser — tu pourras faire de la capture de contexte (ou fermeture ou closure).

    def additionneur(n):
        def ajoute_n(x):
            return x + n
        return ajoute_n

    Pour map et filter, ça peut se réécrire avec des expressions de liste/générateur en compréhension.

    [ fonction_map(x) for x in iterable if condition_filter(x) ]

    Ceci dit, map/filter/reduce sont encore dispos en Python 3 (juste que reduce est dans le module functools, et map/filter retournent des itérateurs).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Mauvaises fréquentations?

    Posté par  (site web personnel) . En réponse au journal La France n'est pas une dictature mais. Évalué à 5. Dernière modification le 01 février 2019 à 13:31.

    Tu crois qu'il a déjà participé à une manifestation revendicative dans la rue ?

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Si je devais voter

    Posté par  (site web personnel) . En réponse à la dépêche Un nouveau logo pour Fedora ?. Évalué à 4.

    Si tu sais écrire en anglais… «L'équipe a proposé deux possibilités et souhaite des retours constructifs, en anglais uniquement, pour éventuellement peaufiner ces idées.»

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Très intéressant !

    Posté par  (site web personnel) . En réponse au journal De l'absence de débat en France sur l'article 13 de la directive européenne droit d'auteur.. Évalué à 5.

    Le médiateur de radio-france fait une intervention régulière de réponse aux courriers reçus (le samedi ou le dimanche, je ne sais plus), la réponse sera peut-être là.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: utiliser apache côté serveur

    Posté par  (site web personnel) . En réponse au message Webdav est-il pourri par concept ou voué à être utilisable dans le futur ?. Évalué à 3.

    WebDAV ça passe sur les protocoles du web, ssh c'est souvent fermé.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Vitesse

    Posté par  (site web personnel) . En réponse au message Numpy as np. Évalué à 2. Dernière modification le 23 janvier 2019 à 13:26.

    Si tu fais du calcul sur des séries de données, il n'y a pas photo. La très très grande majorité des bibliothèques de calcul utilisent des ndarray (qui peuvent être mappés de façon interne vers des tableaux C ou Fortran, traités par des routines en C ou en Fortran compilées en code binaire natif, c'est bien plus efficaces que des scripts Python manipulant des listes).

    Si tu réussis à passer l'aspect frustrant probablement lié à un changement de concepts (ça marche plus sur des opérations ensemblistes, ça demande un certain recul), tu verras que c'est bien plus efficace tant en vitesse d'exécution qu'en temps de programmation.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Alternative

    Posté par  (site web personnel) . En réponse au message Visual studio code pour gros projet C++??. Évalué à 2.

    En commercial il y a aussi les outils de JetBrains, pour le C++ c'est CLion.

    Note: je ne l'utilise pas (je suis sur QtCreator pour le projet C++ sur le quel je bosse actuellement), par contre leur outil PyCharm pour Python est très sympa, si l'outil C++ est du même acabit.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: boost est-il bien installé ?

    Posté par  (site web personnel) . En réponse au message Meson ne détecte pas boost. Évalué à 2.

    Au vu des posts sur le web, tu n'es pas le seul. Et il semble que chaque plateforme embarquée fasse ses propres dépôt avec/sans boost-dev.

    Sinon, une récupération des sources de boost (pour la version qui est packagée via opkg), et installation à la main dans /usr/local (ou plus spécifique mais il va probablement falloir indiquer où c'est à meson).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN