if len(key) < len (sorted_letters): for i in range (len(sorted_letters)-len(key)-1): key.update({sorted_letters[len(key)+i]:f6[i]})这段循环有什么问题
时间: 2024-03-14 09:47:59 浏览: 25
这段循环中有一个问题,即 `range()` 函数的参数应该为 `len(sorted_letters)-len(key)`,而不是 `len(sorted_letters)-len(key)-1`。因为 `range()` 函数的参数是不包含在循环中的,所以如果使用 `-1`,则会有一个元素被遗漏。
因此,修正后的代码应该是:
```
if len(key) < len(sorted_letters):
for i in range(len(sorted_letters) - len(key)):
key.update({sorted_letters[len(key)+i]:f6[i]})
```
这样就可以正确地更新字典 `key` 了。
相关问题
for permutation in matrix_permutations: for i in range(len(mp)): for j in range(len(mp[i])): key[most_common_letters_m[i][permutation[i][j]]] = mf[i][j] if len(key) < len (sorted_letters): for i in range (len(sorted_letters)-len(key)): key.update({sorted_letters[len(key)+i-1]:f7[i]}) decrypted_text = decrypt(cipher_text, key) k1 = is_plaintext3(decrypted_text, word1, word2 ,word3) #k2 = k1 if k1 > k2 else k2 if( k1 > c1): key1 = dict(list(key)[lk1:len(mp[i1])+lk1]) return key1出问题的是这段代码
根据你提供的代码,你需要检查一下 `key` 字典对象的长度是否小于 `sorted_letters` 列表的长度。如果是,那么在 `key` 字典对象中添加缺失的字母和对应的密文字符,以确保 `key` 字典对象的长度与 `sorted_letters` 列表的长度相同。
在你的代码中,添加缺失字母的部分是:
```
if len(key) < len(sorted_letters):
for i in range(len(sorted_letters) - len(key)):
key.update({sorted_letters[len(key) + i - 1]: f7[i]})
```
其中,`key.update()` 方法用于在 `key` 字典对象中添加新的键值对。但是,由于你使用了 `sorted_letters[len(key) + i - 1]` 来作为新键的名称,这可能会导致索引越界或者键重复等问题。你可以使用 `enumerate()` 函数来遍历 `f7` 列表,并使用 `sorted_letters[i]` 作为新键的名称,修改后的代码如下:
```
if len(key) < len(sorted_letters):
for i, val in enumerate(f7):
key[sorted_letters[i]] = val
```
这样就可以避免出现索引越界或者键重复等问题了。
def guess_key1(cipher_text, words): letter_frequency = get_letter_frequency(cipher_text.lower()) sorted_letters = sorted(letter_frequency.keys(), key=lambda x: letter_frequency[x], reverse=True) # paixu most_common_letters = sorted_letters[:6] # first 6 for i in range(len(most_common_letters)): for j in range(i+1, len(most_common_letters)): for k in range(j+1, len(most_common_letters)): key = {most_common_letters[i]: 'e', most_common_letters[j]: 't', most_common_letters[k]: 'a'} . for letter in sorted_letters: if letter not in key: key.update() 补充最后一行的key.update,使未被收入进key中的字母被合并入key中
可以将最后一行的key.update()修改为以下代码:
```
for letter in sorted_letters:
if letter not in key:
key[letter] = ''
```
这样未被收入进key中的字母会被加入到key中,并且对应的值为'',即空字符串。这样做的目的是为了后续使用key解密时,如果密文中出现了未被收录在key中的字母,可以将其直接输出而不需要进行解密。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)