Demande de conseil sur Credit Card Mask de Codewars ?

Résolu/Fermé
nicobesnard - 24 janv. 2020 à 20:42
nicobesnard Messages postés 2 Date d'inscription vendredi 24 janvier 2020 Statut Membre Dernière intervention 25 janvier 2020 - 25 janv. 2020 à 20:23
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 22774 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mai 2024 1 481
24 janv. 2020 à 20:47
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 vendredi 24 janvier 2020 Statut Membre Dernière intervention 25 janvier 2020 1
24 janv. 2020 à 21:15
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
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 vendredi 24 janvier 2020 Statut Membre Dernière intervention 25 janvier 2020 1 > trifou
25 janv. 2020 à 20:23
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