如何创建一个程序,允许我回答问题并将值添加到字典中,直到我告诉它停止并加密它?



我正在尝试创建一个程序,允许用户将每个答案添加到字典中。我也试着重复这个过程,直到被要求停止。我正在尝试创建多个字典,然后加密它们。我是否应该在列表中创建一个字典来创建多个字典,以及在将信息添加到字典之前如何验证信息。

import base64
from datetime import datetime
from cryptography.fernet import Fernet 
import pickle
from base64 import b64decode

def username():
try:
while True:
name = [" ", "-"]
names = input("Enter Name:")
for n in name:
if n in str(names):
break
if str(names):         
break 

except TypeError:
print('wrong')
return names

def userDOB():
try:
dob = input("Enter your date of birth - MM/DD/XXXX:")
date = datetime.strptime(dob, '%m/%d/%Y')
if date:
print(f' {date.month}/{date.day}/{date.year}')

except ValueError:
while True:
print("Please Enter Date Of Birth - MM/DD/XXXX")
dob = input("MM/DD/XXXX:")
date = datetime.strptime(dob, '%m/%d/%Y')
if date:
break
return dob

def userstraddress():
stradd = [" ", " . "]
straddress = input("Enter The Street Address:")
for x in stradd:
if x in straddress:
return straddress


def useremail():
email = ["@", "."]
emailaddress = input("Enter Email Address:")
for n in email:
if n in emailaddress:
try:
emails = str(emailaddress)
if emails:
break
except TypeError:
print("Error")
return emailaddress

x = {'Name': " ", 'Date of Birth': " ", 'Street Address':" ", 'Email Address': " "}

x.update({'Name':username()}) 
x.update({'Date of Birth': userDOB()})
x.update({'Street Address': userstraddress()})
x.update({'Email Address': useremail()}) 

xx = str(x).encode('utf-8')
base64_dict = base64.b64encode(xx)
print(base64_dict)
xx1 = eval(base64.b64decode(base64_dict))
print(xx)

这段代码看起来不太好。通常首先得到raw_data。然后对数据进行消毒,并对其进行验证检查。验证逻辑看起来并不能正常工作。不要在except块中放置循环。except块是用来处理异常的,比如记录或显示它或做其他事情。异常块中的无限循环是不好的代码。

在单个循环中获取数据。如果数据没有正确地输入到循环中,就让它失败吧。将输入的数据保存到字典或列表中。根据您的需求对每个字段运行适当的验证。如果你需要一个好的和简单的数据模型和验证库查看Pydantic。您还可以查看那里提供的验证示例。https://pydantic-docs.helpmanual.io/

最新更新