我正在为练习注册系统制作代码,我遇到了如何添加ID和密码列表的问题。
print('id = ')
id = input()
while True:
print('password = ')
password = input()
print('Please retype your password = ')
repassword = input()
if repassword == pas:
print('successfully registered.')
acc = [ ]
acc.append([(id),(pas)])
break
else:
print('please check your password.')
当此循环结束时acc
列表被删除,我无法使用该列表。
如何保存我的清单?
答案 0 :(得分:2)
我对您的代码进行了一些更改以使其正常工作:
pas
重命名为password
。acc
,因此每次循环都不会清除它。试试这个:
acc = []
print('id = ')
id = input()
while True:
print('password = ')
password = input()
print('Please retype your password = ')
repassword = input()
if repassword == password:
print('successfully registered.')
acc.append((id, password))
break
else:
print('please check your password.')
print(acc)
答案 1 :(得分:0)
阻止代码工作的唯一方法是在一个地方调用密码变量password
,在另外两个地方调用pas
。除了将pas
更改为password
之外,其他任何操作都可以使其正常运行。
循环中定义的变量在循环退出时仍在范围内。这是Python工作原理的基本部分。这是一个简单的演示:
Python 3.6.3 (default, Nov 13 2017, 09:55:42)
[GCC 4.9.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> while True:
... x = 5
... break
...
>>> x
5
除了修复错误名称的变量之外,我还会对代码进行三项更改:
id
是一个内置函数,shadow内置函数不是一个好主意。也许称之为“user_id”。将提示传递给input
而不是打印 - 这更简洁。像这样:
password = input("password = ")
将acc
指定为一个简单的元组 - 它不需要是一个列表,您不需要创建它然后实例化它。只是做
if repassword == password:
acc = (user_id, password)
break
或者,就此而言,只需在退出while
循环后使用user_id和密码即可。您根本不需要acc
!
通过所有这些更改,您的代码变得更短更简单:
user_id = input('id = ')
while True:
password = input('password = ')
repassword = input('Please retype your password = ')
if repassword == password:
print('successfully registered.')
break
else:
print('please check your password.')
print("User id: {}\nPassword: {}".format(user_id, password))