J'ai besoin de prendre une entrée et de la convertir en n'importe quel type de variable. Par exemple, si l'entrée est deux, je dois comprendre que 2 est un entier, puis stocker l'entrée convertie int en une variable de type int. Par exemple:

>>> myInput = input("Input a number: ")
>>> if myInput is float:
>>>   print("myInput is a float")
>>> if myInput is int:
>>>   print("myInput is an integer")
Input a number: 2
myInput is an integer

Cependant, ce qui se passe réellement est:

Input a number: 2

Puis le programme se termine.

0
RedSox2 4 juin 2020 à 20:33

3 réponses

Meilleure réponse

input() renvoie une chaîne, vous devez d'abord la convertir. Vous pouvez déterminer s'il peut s'agir d'un flottant ou d'un entier en vérifiant la présence d'un '.'

myInput = input("Input a number: ")
if '.' in myInput:
    try:
        myInput = float(myInput)
        print(f'{myInput} is a float')
    except ValueError:
        print(f'{myInput} is not a number')
else:
    try:
        myInput = int(myInput)
        print(f'{myInput} is an integer')
    except ValueError:
        print(f'{myInput} is not a number')
0
alec_djinn 4 juin 2020 à 17:44

int et float ne sont pas des types de données, ce sont des fonctions intégrées qui convertissent respectivement leur argument en un int et un float. Vous pouvez utiliser une capture d'essai pour cela. Si l'appel à int(myInput) déclenche une ValueError, alors la chaîne ne représente pas un entier valide, et de même avec float(myInput).

try:
    int(myInput)
    print('myInput is an int')
except ValueError:
    pass
try:
    myInput = float(myInput)
    print('myInput is a float')
except ValueError:
    pass

Une autre option

0
user2876414 4 juin 2020 à 17:46

Ce n'est pas une manière très sophistiquée, mais cela fonctionnera dans le bon sens - je pense que le codage devrait toujours être amusant.

def check_input_type(value):

    out = 'Input is String: {}'
    def is_float(val):
        return not (float(val)).is_integer()

    ord_val = ord(value[0])
    if not ord_val >= 65:
        try:
            if is_float(value):
                out = 'Input is Float: {}'
            else:
                out = 'Input is Integer: {}'
        except ValueError:
            pass
    return out.format(value)

check_input_type(input("Input a number: "))

Testons:

check_input_type(input("Input a number: "))

Input a number: 78.89
Out[37]: 'Input is Float: 78.89'

check_input_type(input("Input a number: "))

Input a number: 1arrow
Out[38]: 'Input is String: 1arrow'

check_input_type(input("Input a number: "))

Input a number: 123
Out[39]: 'Input is Integer: 123'

check_input_type(input("Input a number: "))

Input a number: 123-one-two-three
Out[40]: 'Input is String: 123-one-two-three'
0
Parvathirajan Natarajan 4 juin 2020 à 18:17