这是一个无限循环但第一次if在第二次出现时不起作用

时间:2018-02-10 13:14:40

标签: python loops

while counter == 1:
    NUsername = input()+"\n"
    Username_list_in_SignUp = Username_list.readlines()
    if NUsername in Username_list_in_SignUp:
        print("Y")
    if NUsername not in Username_list_in_SignUp:
        print("N")

1。最初在Username_list中有一个Username调用“Justin”,但是当我第一次运行它时会检查用户名是否重复,但第二次我在Justin中键入时它不检查并为我打印“N” 。我应该如何解决这个问题。

ps:第一次来自stackoverflow

1 个答案:

答案 0 :(得分:3)

readlines将文件指针移动到文件末尾。你应该在循环之前只做一次。无论如何都无需一次又一次地读取文件:

Username_list_in_SignUp = Username_list.readlines()  # here!
# or for better contains check performance 
# Username_list_in_SignUp = set(Username_list.readlines())  
while counter == 1:
    NUsername = input()+"\n"
    if NUsername in Username_list_in_SignUp:
        print("Y")
    else:  # suffices
    # elif NUsername not in Username_list_in_SignUp:
        print("N")

对同一文件句柄的readlines的任何进一步调用都将导致一个空列表,除非你将指针移回,例如通过Username_list.seek(0)