Bonsoir,
Il y a plusieurs problèmes dans ton code, le plus important est qu'il n'est pas opérationnel .
Si tu veux enregistrer plus d'un client, il ne peut pas fonctionner (même si les mots de passe ou les prénoms ne sont pas identiques). Ta fonction sauvegarde est à revoir ou du moins à écrire. Elle n'ajoute pas au json les nouvelles saisies mais enregistre juste le dernier venu.
Tu n'as pas testé ton code?
D'autre part, tu as fait de mauvais choix dans la construction de ton dictionnaire:
En effet, tu fais:
dict = {"password": ..., "name": ...}
Tous les clients auront pour clefs les strings "password" et "name" . Comment veux-tu les identifier?
Je lis:
name = input()
if(isinstance(name,str)):
name étant une string ta condition sera toujours vrai. Utilise plutôt la fonction isalpha() sur ta string...
Voici comment pourrait s'écrire ton script: (améliorable et à compléter par quelques tests dont celui pour savoir si le password existe déjà afin d'accepter la saisie).:
import json
def nouveau_client():
print("choisissez un mot de passe d'au moins 5 caracteres\
alphanumérique :")
while True:
password = input()
if len(password) > 4:
print(f"mot de passe correct\n\
Voici votre mot de passe :{password}")
break
print('Entrez un mot de passe de plus de 5 caractere :')
dic = {}
print('Entrez votre prenom :')
while True:
name = input()
if name.isalpha():
print('prenom sauvegardé')
break
print('Entrez une chaine de caractère')
dic[password] = name
sauvegarde(dic)
def sauvegarde(client):
try:
with open("clientbidon.json","r")as f:
d = {}
d = json.load(f)
d.update(client)
except FileNotFoundError:
with open("clientbidon.json","w") as f:
json.dump(client,f)
else:
with open("clientbidon.json","w") as f:
json.dump(d,f)
def verif():
with open("clientbidon.json","r")as f:
d = json.load(f)
print("Entrez votre mot de passe : ")
while True:
password = input()
if password in d:
print(f"Mot de passe correct\nBienvenue {d[password]}")
break
print("Mot de passe incorrect,recommencer..")
blabla = "Bonjour , Bienvenue !\nVous etes déja client ?Tapez 1\n\
Vous etes nouveau client ? tapez 2\n "
var = input(blabla)
if var == "1": verif()
elif var == "2": nouveau_client()