Demande de conseil sur Credit Card Mask de Codewars ?

Résolu
nicobesnard -  
nicobesnard Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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?
0
nicobesnard Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   1
 
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.
0
trifou
 
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:]
0
nicobesnard Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   1 > 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.
1