1
votes

Le conditionnel ne fonctionne pas lors de la vérification du type d'entrée int

Eh bien, je suis très très nouveau dans la programmation python et j'apprends encore.J'ai donc essayé de créer une fonction où j'utilisais len pour compter le nombre de lettres dans une chaîne.Mais depuis, len ne fonctionne pas pour les entiers. J'ai mis en place des conditions afin de renvoyer un message disant "les entiers n'ont pas de longueur". Mais je ne reçois pas le message même lorsque je tape un entier. s'il vous plaît aidez-moi à résoudre ce problème. voici mon code:

def Length_String(L):
    if type(L) == int:
        return "sorry,integers don't have length"
    else:
        return len(L)
x = input()
y = Length_String(x)
print(y)

Ce n'est pas si important mais je veux quand même savoir ce qui empêche le conditionnel de fonctionner. s'il vous plaît aidez-moi.


0 commentaires

3 Réponses :


2
votes

Ils input fonctionnent dans Python renvoie une valeur de type str même si ce que vous saisissez est une valeur entière.


0 commentaires

1
votes

En Python, input () renvoie une chaîne, peu importe ce que vous entrez. Vous n'avez donc pas besoin de vérifier si la valeur saisie est un int . Si vous souhaitez toujours le vérifier, vous pouvez le faire avec la fonction isinstance :

if isinstance(L, int):
    return "sorry,integers don't have length"


1 commentaires

Notez que cela indiquerait toujours la longueur de L dans votre cas car vous ne le convertissez pas en int



2
votes

Notez que vous pouvez toujours taper help (peu importe) dans une invite Python pour lire des informations utiles à ce sujet:

input(...)

if L.isnumeric(): # or isdigit or isdecimal
    return "Error, this is a number!"
return L

Vous obtenez donc toujours une chaîne. Une façon de voir si cette chaîne pourrait être convertie en un entier est:

try:
     int(L)
     return "Error, this is an integer!"
except ValueError:
    return len(L)

Bien sûr, cela ne fonctionnera pas pour les flottants, donc là peut-être plus de vérifications que vous voulez faire (ou utilisez simplement float (L) ). Une autre façon

input([prompt]) -> string

Read a string from standard input.  The trailing newline is stripped.
If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
On Unix, GNU readline is used if enabled.  The prompt string, if given,
is printed without a trailing newline before reading.

Ici, il convient de mentionner qu'en plus de l'aide qui peut afficher les méthodes, vous pouvez toujours taper dir (quelque chose) dans une invite Python alors voyez quelques méthodes utiles dans une liste.


0 commentaires