Je dois identifier si il y a un espace entre un nombre et une virgule, alors ce nombre est invalide. Donc, si le nombre a plus ou moins de 2 décimales et / ou des espaces blancs entre les virgules, il n'est pas valide, mais s'il n'a pas de blouse entre les virgules et dispose de 2 décimales, il s'agit d'un nombre valide. C'est pourquoi le premier numéro de la ligne 1 est valide
Il y a deux méthodes, je préfère travailler sur la méthode 2 mais je pensais que si je pose deux méthodes, cela pourrait vous aider à ajouter sur P>
Line 1: INVALID VALID INVALID Line 2: VALID INVALID VALID
4 Réponses :
avec décimal.decimal objet code>, vous pouvez récupérer l'exposant, ce qui vous indique en quelque sorte le nombre de décimales ( Voir DOCS ): #with line = "1,1.02, 123.0005"
'Line 1: INVALID VALID INVALID'
#with line = "1.02, 1.02 , 1.02"
'Line 2: VALID INVALID INVALID'
Vous pouvez diviser les chaînes avec La sortie sera p> , code> et décidez si la chaîne est valide ou invalide sur la base de si les stars de la chaîne avec un espacement code>
Je vois comment ça marche mais quand je l'ai mis dans mon code, il n'imprime pas la ligne 1: valide invalide non valide. Il est juste de dire que la syntaxe non valide est la dernière citation de la déclaration d'impression. Quel est le but du F dans la déclaration d'impression? Si je supprime le F, alors il imprime: Line {IDX + 1}: {'' .join (res)} ligne {iDX + 1}: {'' .Join (res)}
Aah d'accord, quelle version Python utilisez-vous? Ce sont des chaînes F, une nouvelle façon de formater une chaîne, mais pour Python3.6 et plus, de toute façon que je suis retourné à une chaîne plus ancienne.Format qui devrait fonctionner pour vous @ slashx43, vous pouvez essayer à nouveau et cela fonctionnera pour vous
Essayez ceci: lecture de fichier: p> sortie:
Ligne1: valide valide non valide p> p>
Ceci est utile mais je reçois la liste des numéros d'un fichier texte et non du code lui-même.
J'ai déjà mis à jour le code et j'ai ajouté une partie à lire le fichier de formulaire
Une compréhension de la liste basée sur la fractionnement sur des virgules et un petit trucs de cordes seraient beaucoup plus simples:
line="1,1.02, 123.0005"
result = " ".join("IN"*(" " in s)+"VALID" for s in line.split(","))
print(result) # VALID VALID INVALID
Je pense que la lisibilité / la compréhension importe plus que la réduction du nombre de lignes de code. Le "in" * ("" dans s) code> est un pur ol 'sorcellerie.
@Toothpick anemone, je suis d'accord avec vous sur le problème de la lisibilité. Il est parfois difficile d'exorciser le démoniste Python en moi :)
@Alaint. merci mais j'ai besoin de lire / écrire les chiffres d'un fichier texte et non des chiffres du code lui-même
Étant donné que votre code montre que vous savez déjà comment lire des lignes d'un fichier, je ne croyais pas qu'il était pertinent de répéter cette partie. J'ai également senti que cela beurrerait la solution réelle sous le code de la plaque de chaudière.
Pourquoi
LIGNE 1 CODE> PREMIER NUMBRE serait-il invalide?1, code> devrait être valide car il ne commence pas par une espace blanche, j'ai supposé que et essayé de proposer une réponse @ slashx43. Vérifiez-le@Sebastentid Désolé j'ai oublié de mentionner quels numéros qualifiés comme valides ou invalides j'ai mis à jour ma question
Merci pour la mise à jour @ slashx43, j'ai mis à jour mes conditions dans la réponse en fonction de votre nouvelle entrée, veuillez regarder un look