题解 | #禁止重复注册#
禁止重复注册
https://www.nowcoder.com/practice/43acd439112c4b85a9168ad3dd7e2bd1
此问题的重点在于:不区分名字的大小写,故新老用户名单均需upper或lower后一一对比
以下是对评论区方法以及涉及知识点的整理:
方法一:两列表分别循环——先处理好老用户列表,再拿新用户名称一一对应【逻辑简单!】
current_users=['Niuniu','Niumei','GURR','LOLO'] new_users=["GurR",'Niu Ke Le','LoLo','Tuo Rui Chi'] current=[username.lower() for username in current_users] for name in new_users: if name.lower() in current: print('The user name '+name+' has already been registered! Please change it and try again!') else: print('Congratulations, the user name '+name+' is available!')
方法二:嵌套循环
current_users=['Niuniu','Niumei','GURR','LOLO'] new_users=["GurR",'Niu Ke Le','LoLo','Tuo Rui Chi'] for name in new_users: for i in range(0,4): if name.lower()==current_users[i].lower(): print('The user name '+name+' has already been registered! Please change it and try again!') break ##及时跳出循环,防止后续碰到其他不等值继续else else: print('Congratulations, the user name '+name+' is available!')
此处需要注意if-else的位置以及break的存在:
- 满足if:break可跳出当前循环,
- 当循环结束if都不曾满足才会执行else
附break知识点:
1. for循环+break
- 只有if :对循环内每个对象执行if,遇break就终止循环
- If-else且同级:对循环内每个对象执行if-else,遇break终止循环
- If-else但else在外层:对循环内每个对象执行if,遇break终止;
若整个循环都未终止,则执行else(见本题情况)
2. 利用break终止内外循环:
- 内循环
- 外循环(内循环break前加一个flag即可)