Demande de conseil sur Credit Card Mask de Codewars ? [Résolu]

Signaler
-
nicobesnard
Messages postés
2
Date d'inscription
vendredi 24 janvier 2020
Statut
Membre
Dernière intervention
25 janvier 2020
-
Bonjour,

je travaille sur Codewars sur un exercice (Credit Card Mask) qui consiste à écrire (language python) une fonction "maskify", qui change tous les caractères sauf les quatre derniers '#'.

Exemples:
maskify("4556364607935616") == "############5616"
maskify( "64607935616") == "#######5616"
maskify( "1") == "1"
maskify( "") == ""

Pourriez vous m'éclairer sur ce qui ne colle pas dans ma solution ci-dessous:

def maskify(cc):
solution = ""
for i in range (len (cc)):
if i < (len(cc) - 4):
solution += "#"
else:
solution += cc[i]
print (solution)


Merci par avance

Configuration: Windows / Chrome 79.0.3945.117

2 réponses

Messages postés
9688
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
532
bonjour,
peux-tu utiliser les balises de code quand tu partages du code?
ta question implique que ton code ne fais pas ce que tu souhaites. peux-tu être plus précis?
Messages postés
2
Date d'inscription
vendredi 24 janvier 2020
Statut
Membre
Dernière intervention
25 janvier 2020

Désolé, je pensais l'avoir fait mais je m'y suis mal pris. Je corrige ci-dessous:

def maskify(cc):
    solution = ""
    for i in range (len (cc)):
        if i < (len(cc) - 4):
            solution += "#"
        else:
            solution += cc[i]
    print (solution)


En fait, je fais l'exercice en parallèle sur spyder et ça fonctionne mais codewars ne me le valide pas. Je me suis donc forcément trompé quelque part, mais j'ai besoin d'un œil plus expérimenté pour m'éclairer.
Bonsoir,

Ton code est correct, à mon avis c'est juste une histoire de return, ta fonction ne devrait pas faire un print mais un return, codewars doit analyser le retour de ta fonction.

Pour info, on peut faire cela directement en utilisant les slices.

def maskify(cc):
    return '#' * len(cc[0:-4]) + cc[-4:]
nicobesnard
Messages postés
2
Date d'inscription
vendredi 24 janvier 2020
Statut
Membre
Dernière intervention
25 janvier 2020
> trifou
Bonsoir trifou,

c'était exactement ça, bravo !! Merci, j'arrivais pas à mettre le doigt dessus.

Et bravo pour ta solution: hyper synthétique. Tu fais en 2 lignes ce que j'écris en 8 !! Merci pour la leçon.