经过各种尝试,只发现在#注册模块内生成message_dict字典时 message_list列表就已经变化了,与你的list2变量无关,(把与#注册模块,while t<999999999: 内容无关的东西全部删除之后,尝试了修改zuce函数内-除第一次外-生成message_dict字典后再吧list2变量改为其他内容,message_list列表中第一个字典会直接变成第二个输入的信息,此时还未调用while循环中的message_list列表的添加功能-也把insert方法改为append方法试过无果-message_list列表中只有一个字典。所以问题不出在list2参数的传递 也不出在message_list列表的添加字典。) 至于为什么会这样,我也想不明白,只能说你代码写错了,而且纵观你的代码错的不止这一处,(比如登录的循环模块有问题,密码长度虽然能提示但保存的还是第一个等等)我只能帮你重写一份了
[Python] 纯文本查看 复制代码
# username 用户名
# password 密码
# nickname 昵称
# age 年龄
message_list = []
def zhuce(): # 注册模块
while True: # 用户名循环
username = input('请输入用户名(长度6-20):')
if len(username) < 6:
print('用户名太短!', end='\t')
elif len(username) > 20:
print('用户名太长!', end='\t')
else:
break
while True: # 密码循环
password = input('请输入密码(长度8-20):')
if len(password) < 8:
print('密码太短!', end='\t')
elif len(password) > 20:
print('密码太长!', end='\t')
else:
break
nickname = input('请输入昵称:')
while True: # 年龄循环
age = input('请输入年龄:')
if age.isdigit():
age = int(age)
break
else:
print('请输入整数!', end='\t')
message_dict = {'用户名': username,
'password': password,
'昵称': nickname,
'年龄': age}
message_list.append(message_dict)
print('注册完成!')
def denglu(): # 登录模块
if len(message_list) == 0: # 判断是否有用户注册
print('请先注册!')
return False, None
input_username = input('请输入用户名:')
i = 0
while i < len(message_list): # 判断用户名是否错误
if input_username == message_list[i]['用户名']:
break
else:
i += 1
if i == len(message_list):
print('该用户名不存在!请重新输入!')
denglu()
while True:
input_password = input('请输入密码:') # 判断密码是否正确
if input_password == message_list[i]['password']:
print('登录成功!\n您的登录信息为:')
for p, q in message_list[i].items():
if p == 'password':
continue
else:
print(p, '--', q)
return True, i
else:
print('密码错误! 请重新输入!')
def zhuxiao(numb): # 注销模块
print('当前用户信息为:')
for p, q in message_list[numb].items():
if p == 'password':
continue
else:
print(p, '--', q)
while True:
key = input('是否注销?[1.确认][2.取消]\n>>> ')
if key == '1':
return False
elif key == '2':
return True
else:
print('输入错误,请重新输入!')
def action(): # 主控模块
set_sss = False # 登录状态
apple = None # 登录所在列表位置
print("=====================\n欢迎使用登录系统V2.0!")
while True:
print("*********************")
key = input('用户注册请按【1】,登录请按【2】\n注销请按【3】,退出请按【4】\n充值VIP请按【99999】\n>>> ')
if key == '1':
print('=====================')
zhuce()
elif key == '2':
print('=====================')
if set_sss:
print('您已登录:')
for p, q in message_list[apple].items():
if p == 'password':
continue
else:
print(p, '--', q)
else:
set_sss, apple = denglu()
elif key == '3':
print('=====================')
if set_sss:
set_sss = zhuxiao(apple)
else:
print('您还未登录')
elif key == '4':
print('=====================\n谢谢使用,再见!')
break
elif key == '99999':
print('=====================\n出门左转别回头!!!')
else:
print('无效操作,重新输入!')
action()
写的很清楚,备注也很清楚,只简单的测试了一遍,还可以的话顶起来,有问题call我,再改。我也刚入门 |