IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comment détecter le type d'une variable


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut Comment détecter le type d'une variable
    Bonsoir

    J'écris un programme qui doit me permettre de connaître la nature du nombre
    Pour cela, j'utilise la division qui souvent donne des quotients de type float
    Ce que je veux savoir, c'est comment détecter le type du résultat donné par la variable, avant d'opérer des erreurs
    Il y a sûrement un moyen permettant de dire si le quotient est un entier ?

    Merci d'avance

    Et voici le début de mes exploits
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    # !/usr/bin/env python 3.5
    # -*- coding: utf-8 -*-
    from math import sqrt
    n_dep = n_depart = 10
    n_arr = n_arrive = 100
    n_distan = (n_arrive - n_depart) + 1
    for n in range(n_distan):
        y6 = n_dep % 6  # Calcul de typage
        if n < 7:
            if 5 > y6 > 1:
                y6 = 1
        if y6 == 1 or y6 == 5:
            n7_dep = n_dep / 7
            ns_dep = sqrt(n_dep)
            n5_dep = n_dep / 5
            print(n_dep, 'n7', n7_dep, 'ns', ns_dep, 'n5', n5_dep)
        n_dep += 1

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Avec type(variable) qui dans ton cas te renverra soit <type 'float'> soit <type 'int'>. Attention tout de même car type(1.0) renvoie <type 'float'> de par la présence du point.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Avec type(variable) qui dans ton cas te renverra soit <type 'float'> soit <type 'int'>. Attention tout de même car type(1.0) renvoie <type 'float'> de par la présence du point.
    C'est à cause de ce retour du fait de la présence du point, qui m'a dirigé vers DVP.
    Il y a une solution un peu calculée, en soustrayant la valeur int(variable) de variable
    Comme çà, si variable = 1.0 la soustraction égale un zéro c'est qu'il s'agit d'un quotient entièrement entier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    variable = 5 / 5
    difference = variable - int(variable)
    if différence == 0:
        print('zéro')

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par toumic Voir le message
    C'est à cause de ce retour du fait de la présence du point, qui m'a dirigé vers DVP.
    Il y a une solution un peu calculée, en soustrayant la valeur int(variable) de variable
    Comme çà, si variable = 1.0 la soustraction égale un zéro c'est qu'il s'agit d'un quotient entièrement entier
    Dans ce cas, autant utiliser float.is_integer().
    Mais la représentation des flottants étant ce qu'elle est, une opération peut donner un nombre avec une partie décimale proche de 0 ou de 1 au lieu d'un entier.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> (4**3) ** (1.0/3)
    3.9999999999999996
    >>> _.is_integer()
    False
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Dans ce cas, autant utiliser float.is_integer().
    Mais la représentation des flottants étant ce qu'elle est, une opération peut donner un nombre avec une partie décimale proche de 0 ou de 1 au lieu d'un entier.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> (4**3) ** (1.0/3)
    3.9999999999999996
    >>> _.is_integer()
    False
    >>>
    - W
    C'est un conseil précieusement développé, qui je l'imagine précieux à la découverte du dialogue Python, merci.
    Et pour ne pas rester sur l'échec du premier post, l'affaire c'est incroyablement résolue, basiquement parlant.
    En cette première vue des nombres premiers de où et à on veut, pour le plaisir d'avoir eu la possibilité d'écrire ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    # !/usr/bin/env python 3.5
    # -*- coding: utf-8 -*-
    from math import sqrt
    import time
     
    begin = time.time()
    n_def = [0]
    # TROIS
    # La fonction de production des premiers
    def premier(point, num):
        if point == 0:          # Valeur inconstante
            n6 = num % 6        # Calcul de typage
            # Au premier niveau des premiers
            if num < 7:
                if 5 > n6 > 1:
                    n6 = 1
            if n6 == 1 or n6 == 5:
                nu_0 = 0
                if num > 7:
                    # QUATRE
                    # Approfondissement utile
                    for nu in range(2, int((num / 2) + 1)):
                        nue = num / nu
                        if float.is_integer(nue) == True:
                            nu_0 += 1
                            break
                # CINQ
                # Expression Python
                if nu_0 == 0:
                    n_def[0] += 1
                    print('SIX',n_def[0], 'n_premier', n_dep)
    n_dep = n_depart = 0
    n_arr = n_arrive = 200
    n_distan = (n_arrive - n_depart) + 1
    # UN
    # Le typage donne le rang des premiers
    for n in range(n_distan):
        n_poin = 0
        y6 = n_dep % 6          # Calcul de typage
        # Au premier niveau des premiers
        if n_dep < 7:
            if 5 > y6 > 1:
                y6 = 1
        # DEUX
        # Passage du type premier possible
        if y6 == 1 or y6 == 5:
            n5_dep = n_dep / 5      # Constante originale en croix
            n7_dep = n_dep / 7      # Constante originale verticale
            ns_dep = sqrt(n_dep)    # Constante originale rare
            # Traitement des constantes et premier niveau
            if n5_dep - int(n5_dep) == 0 and n_dep != 3 and n_dep != 5:
                n_poin = 1
            if n7_dep - int(n7_dep) == 0 and n_dep != 7:
                n_poin = 1
            if ns_dep - int(ns_dep) == 0 and n_dep != 1:
                n_poin = 1
            # Appel avec transmission de la constante
            premier(n_poin, n_dep)
        n_dep += 1
    print("Temps @ toumic = %s" %(time.time() - begin), 'len', n_def[0])
    Dernière modification par Invité ; 07/08/2016 à 08h21. Motif: Mise à jour

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/08/2010, 22h13
  2. [PowerShell] Comment retrouver le type d'une variable avec Where-Object
    Par badack dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 19/07/2010, 16h49
  3. [XSL] Comment modifier la valeur d'une variable?
    Par sorcer1 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/02/2010, 13h26
  4. comment connaitre le type d'une variable java
    Par bard123 dans le forum Général Java
    Réponses: 4
    Dernier message: 16/09/2008, 15h51
  5. Comment détecter la frappe d'une touche ?
    Par Bubonik software dans le forum C
    Réponses: 17
    Dernier message: 11/12/2003, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo