索引错误:列表索引超出范围:

时间:2021-04-20 00:26:36

标签: python

如何修复此代码
我想检查密钥是否像列表中的密钥一样 我也想要 如果key为true用户可以使用该工具如果key为false用户不能使用该工具

keys
    {
        "link": "www.xxxxxxxxxxx.com",  
        "key": '34243242354354'
    },
    {
        "link": "www.xxxxxxxxxxx.com",
        "key": '432432534534534'
    },
    {
        "link": "www.xxxxxxxxxxx.com",
        "key": '42345534534'
    }
]
number = 0 
key = input("put the code to use this tool :")
for x in keys:
    number = number + 1 
    if keys[number]["key"] == key:
       print("true")
    else:
       print("false")
      
    

2 个答案:

答案 0 :(得分:0)

嗨,您应该尝试使用 enumerate() 进行索引循环。

def key_func():
    key = input("put the code to use this tool :")
    for i ,m in enumerate(keys):
        if m['key'] == key:
            return True
    return False

答案 1 :(得分:0)

我看到这里有 3 个问题:

  1. 计数器不应在 IF 语句执行之前。
  2. 你应该把break放在'true'语句之后。
  3. 您需要更好的条件而不是else

你可以这样做:

number = 0

key = input("put the code to use this tool :")

for x in keys:
    
    if keys[number]["key"] == key:
        print("true")
        break
        
    elif number == (len(keys) - 1):
        print("false")
        
    number = number + 1

或者更好地使用枚举

number = 0

key = input("put the code to use this tool :")

for number, x in enumerate(keys):
    
    if keys[number]["key"] == key:
        print("true")
        break
        
    elif number == (len(keys) - 1):
        print("false")