Для улучшения кода шифра Виженера можно использовать функции для уменьшения повторяющегося кода и улучшения читаемости. Также можно оптимизировать код, убрав лишние переменные и улучшив структуру программы.
Пример улучшенного кода с использованием функций:
```python
def vigenere_cipher(text, key, decrypt=False):
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
key = key.upper()
key_len = len(key)
key_pos = 0
result = ''
for char in text:
if char.upper() in alphabet:
shift = alphabet.index(key[key_pos % key_len]) if not decrypt else -alphabet.index(key[key_pos % key_len])
idx = (alphabet.index(char.upper()) + shift) % len(alphabet)
result += alphabet[idx] if char.isupper() else alphabet[idx].lower()
key_pos += 1
else:
result += char
return result
text = 'Hello World'
key = 'KEY'
encrypted_text = vigenere_cipher(text, key)
print(encrypted_text)
decrypted_text = vigenere_cipher(encrypted_text, key, decrypt=True)
print(decrypted_text)
```
Этот код более компактный, использует функции для шифрования и расшифрования текста, и имеет лучшую организацию. Также можно добавить обработку ошибок и проверки ввода на корректность.