为了账号安全,请及时绑定邮箱和手机立即绑定

代码无法识别 csv 文件中特定单元格的字符串

代码无法识别 csv 文件中特定单元格的字符串

GCT1015 2022-05-24 17:09:01
我正在创建一个登录和菜单程序,我有一个 CSV 文件,其中包含我发明的一些用户的登录名和密码。当我运行程序时,它没有任何错误,但是当我输入正确的用户名和密码时,它不能正常工作。当我的代码应该打印“已授予访问权限”时,它会打印“未授予访问权限”。这是我在控制台中打印 CSV 时的样子:[['Username' 'Password' 'Access Level'] ['booker12' '12se74' '1'] ['grey07' '04ap67' '1'] ['johnson81' '30no86' '1'] ['jenkins46' '14ju73' '1'] ['smith79' '09ja61' '1'] ['ccastrej' 'superuser03' '3'] ['ssofia' 'semigod1' '2'] ['isabella' 'payasian' '2'] ['pablitohesk' 'soccer13' '2'] ['teacher' 'igradethis100' '3'] ['pedrocorte' 'asturiano' '1'] ['andrea' 'jesusito' '1']]这是我现在拥有的代码:import sysimport csvimport numpy as npdef Main():    login()def login():    with open('MatrixAccess.csv') as csvfile: #I import the csv file        reader = csv.reader(csvfile, delimiter = ';') #I read through it        x = list(reader) # I convert the csv into an array to loop through it easier with the numpy library    print(np.matrix(x)) #I print it to check if I imported it correctly    print("Username: ")    str1 = input()    print("Password: ")    str2 = input()    for i in [2]:            for j in [i]: #I have to convert the ints to lists so I can iterate through the list                if(str1 == x[i][j] and str2 == x[i][j+1]):                    print("Access granted")                else:                    print("Access not granted")def menu():    print("************MAIN MENU**************")
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

你的循环是完全错误的。for i in [2]just 表示循环遍历该 1 元素列表,这与仅编写i = 2没有任何循环没有什么不同。


您应该遍历 list x,其中包含读取文件的结果。


for row in x[1:]:

    if str1 == row[0] and str2 == row[1]:

        print("Access granted")

        break

else:

    print("Access not granted")

x[1:]跳过标题行。请注意,else:块在for循环中,而不是if语句;仅当您在没有中断的情况下到达循环末尾时才会运行。如果你把它放在if语句上,它会为文件中不匹配的每一行报错;即使已找到,请参阅搜索数组报告“未找到”


查看完整回答
反对 回复 2022-05-24
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信