for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中元素。要在遍历列表的同时对其进行修改,可使用while循环。通过将while循环同列表和字典结合起来使用,可收集、存储并组织大量输入,供以后查看和显示。
假设有一个列表,其中包含新注册但还未验证的网站用户;验证这些用户后,如何将他们移到另一个已验证用户列表中呢?一种办法是使用一个while循环,在验证用户的同时将其从未验证用户列表中提取出来,再将其加入到另一个已验证用户列表中。
大大的图
我的图
我们首先创建了一个未验证用户列表unconfirmed_users,其中包含丽丽、小明和大胖,还创建了一个空列表confirmed_users,用于存储已验证的用户。while循环将不断运行,直到列表unconfirmed_users变成空的。在这个循环中,函数pop()以每次一个的方式从列表unconfirmed_users末尾删除未验证的用户,并把删除值赋值到变量current_user。将验证用户以首字母大写的形式打印出来。把变量current_user值以append()方式加入到列表confirmed_users末尾。
完善了已验证用户列表confirmed_users之后,用for循环把里面的值打印出来。
这里面有一个有意思的事情是title(),upper(),lower()这样的函数奈何不了汉字。汉字不像字母,没有大小写。比如,把title()改成lower()结果还是不变
用户验证以后就是用户登录,简化起见,只使用用户名登录。用户输入用户名,用if语句与列表中已验证的用户名进行比较,如果一致,则欢迎用户登录。如果不一致,请用户重新检查用户名
好像随机输入的中文变量不能与列表中元素进行比较,这个程序无论我怎么输入中文,都执行的else语句。而且我试了一下让程序自行输出中文,会乱码
但是如果把整个程序改成英文的,就那非常通畅的执行