Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python登录系统中的循环不断重复,不会中断_Python_Csv_While Loop_Login System - Fatal编程技术网

python登录系统中的循环不断重复,不会中断

python登录系统中的循环不断重复,不会中断,python,csv,while-loop,login-system,Python,Csv,While Loop,Login System,我的老师给了我一个任务,让我只为用户名部分建立一个登录系统,他给了代码,但它不能正常工作,因为while循环不断重复,用户在已经输入用户名的情况下输入用户名,而不会进入下一部分代码。我认为代码甚至没有读取文件或拆分行 我试着在不同的地方加入break函数并改变代码的缩进,但我太迷茫了。我还尝试将变量“StudentDetails”更改为UserData(csv文件的名称),但它没有改变任何东西 #Login System #First Name, Last Name, D.O.B, Email,

我的老师给了我一个任务,让我只为用户名部分建立一个登录系统,他给了代码,但它不能正常工作,因为while循环不断重复,用户在已经输入用户名的情况下输入用户名,而不会进入下一部分代码。我认为代码甚至没有读取文件或拆分行

我试着在不同的地方加入break函数并改变代码的缩进,但我太迷茫了。我还尝试将变量“StudentDetails”更改为UserData(csv文件的名称),但它没有改变任何东西

#Login System
#First Name, Last Name, D.O.B, Email, Username, Password

UFound = False
UAttempts = 0 #Set to 0 tries to enter username
#Allow the yser to try login 3 times

while (UFound == False and UAttempts <3):
    UName = input("Please enter your username: ")
    UAttempts = UAttempts +1 #Has entered username once
    #Opens csv file and reads
myFile = open("UserData.csv","r")
for line in myFile:
    StudentDetails = line.split(",") #Splits line into csv parts
    if StudentDetails[4] == UName: #Username is in database
        UFound = True
myFile.close() #Close the data file

if UFound == True:
  print("Welcome to the quiz!")

else:
  print("There seems to be a problem with your details.")
#登录系统
#名字、姓氏、D.O.B、电子邮件、用户名、密码
UFound=False
UATENTS=0#设置为0将尝试输入用户名
#允许yser尝试登录3次

虽然(UFound==False,uattests您遇到了这个问题,因为您没有在while循环中检查它是否是有效的用户名。这应该都在while循环中。我还会在循环外打开和关闭文件,这样就不会每次打开和关闭文件。我还会添加一个部分来捕获太多的尝试。这样做您可以可以删除while循环中的and语句

myFile=open(“UserData.csv”、“r”)
当UFound==False时:
UName=input(“请输入您的用户名:”)
UATENTS=UATENTS+1#已输入用户名一次
如果参数大于2:
打印('尝试次数过多')
打破
#打开csv文件并读取
myFile=open(“UserData.csv”、“r”)
对于myFile中的行:
StudentDetails=line.split(“,”)#将行拆分为csv部分
如果StudentDetails[4]==UName:#用户名在数据库中
打印(“欢迎参加测验!”)
UFound=True
其他:
打印(“您的详细信息似乎有问题。”)
myFile.close()#关闭数据文件

您可以在打开文件的行之后添加一个标识,直到文件关闭。除了小心缩进外,还要注意
line.split(“,”
不会删除前导空格。可能您需要的是
line.split(“,”)