Python 这个指数超出范围是从哪里来的?

Python 这个指数超出范围是从哪里来的?,python,string,encryption,reference,Python,String,Encryption,Reference,我正在编写一个使用密钥加密和解密的算法。或者更确切地说,这更像是对代码的重写。不管怎样,我刚开始构建一个基于文本的界面,Tkinter稍后会出现 当索引一个键时(我已经设置为12345),我会得到一个“IndexError:字符串索引超出范围”。我知道这意味着什么。但我也知道整个字符串在循环中被索引。从0开始。这就是它得到错误的地方。我甚至尝试过单独测试,例如打印(键[0]) 但是Python仍然抛出一个错误。我不明白为什么。它正在使用0引用字符串12345,0应返回1 Do you want

我正在编写一个使用密钥加密和解密的算法。或者更确切地说,这更像是对代码的重写。不管怎样,我刚开始构建一个基于文本的界面,Tkinter稍后会出现

当索引一个键时(我已经设置为12345),我会得到一个“IndexError:字符串索引超出范围”。我知道这意味着什么。但我也知道整个字符串在循环中被索引。从0开始。这就是它得到错误的地方。我甚至尝试过单独测试,例如打印(键[0]) 但是Python仍然抛出一个错误。我不明白为什么。它正在使用0引用字符串12345,0应返回1

Do you want to encrypt or decrypt? encrypt
Input a string toencrypt- Hello123
Input a key- 12345
123451
1234512
12345123
Key = 

您的
变量是空字符串:

>>> Key = ''
>>> Key[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
但最好让函数返回新值;您可以使用
返回键
(结束函数),然后分配该返回值:

Key = Compatibility_check(Key, User_input)

结果我的问题很明显。这是我编写兼容性检查函数的方式。 基本上它需要两个输入,键和用户输入。 所以,它应该检查钥匙上的各种东西,如果不符合,就更换钥匙。不幸的是,我忽略了一个事实,即它只是在更改其内部变量“Key”,该变量与后来使用的“Key”同名


这意味着密钥比输入短,我的加密函数试图引用密钥中不存在的字符

你需要给我们提供异常的完整回溯。啊,好的,我刚才看了一下,加密函数密钥里面似乎是空白的。这可能是我的兼容性检查功能有问题。完成了。很抱歉,我忘记了早期的Yes
Key[0]
引发异常意味着它是一个空序列。好的,我想我可以通过同时提供Encrypt()用户输入和KeyYes来修复它,这是我刚刚意识到的。谢谢你的帮助。
>>> Key = ''
>>> Key[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
def Compatibility_check(Key, User_input):
    global Key
    Temp = 0
    while Key == "":  
        print("Your key cannot be blank")
        Key = input("Please input a new key: ")
    while len(Key) > len(User_input):
        Key = Key[:-1]
    while len(Key) < len(User_input):
        Key += (Key[Temp])
        Temp += 1
        print(Key)
Key = Compatibility_check(Key, User_input)