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