• 1
    Entrée et sortie
    • Tâches
  • 2
    Conditions
    • Tâches
  • 3
    Boucle for
    • Tâches
  • 4
    Chaînes
    • Tâches
  • 5
    Boucle while
    • Tâches
  • 6
    Listes
    • Tâches
  • 7
    Tableaux 2D
    • Tâches
  • 8
    Dictionnaires
    • Tâches
  • 9
    Ensembles
    • Tâches
  • 10
    Fonctions et récursion
    • Tâches
  • к

Leçon 4. Lines

Difficulté :

Exercice«Jeux sportifs»

💻 Python

Écrivez un programme qui convertit la valeur de la ligne au format Base64 en utilisant le codage ASCII. Remarque :   cette tâche utilise une version de Base64 sans remplissage (le symbole   = n'est pas ajouté à la fin). L'algorithme Base64 convertit les données binaires en un format texte, en utilisant seulement 64 symboles ASCII sûrs pour l'impression. L'idée principale est de prendre 3 octets (24 bits) des données d'entrée et de les présenter sous la forme de 4 caractères (4 * 6 bits = 24 bits).

Codage (to_base64) :

  1. La ligne est convertie en une séquence de codes ASCII.
  2. Chaque code ASCII est présenté comme un nombre binaire de 8 bits.
  3. Toutes ces séquences de 8 bits sont combinées en une longue chaîne binaire.
  4. Cette longue chaîne est découpée en groupes de 6 bits.
  5. Chaque groupe de 6 bits est converti en un nombre décimal (de 0 à 63).
  6. Ce nombre est utilisé comme index pour choisir un symbole dans l'alphabet Base64 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").

Format d entrée

Une ligne est fournie en entrée.

Format de sortie

Ligne — Le résultat de la transformation.

Exemple

Entrée

homme

Sortie

Twfu

Indice

There will be no clue here, decide for yourself!

main.py
Test 1
Test 2
Test 3
Test 4
Test 5
Test 6
Test 7
Test 8
Test 9
Test 10
Solution du développeur
# Константа с символами алфавита Base64
BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
# Создаем словарь для быстрого обратного поиска (декодирования)
BASE64_MAP = {char: index for index, char in enumerate(BASE64_CHARS)}
s = input()
if not s:
    print("")

# 1. Преобразуем всю строку в одну длинную битовую строку
bit_string = ""
for char in s:
    # Получаем ASCII-код символа и форматируем его в 8-битную двоичную строку
    bit_string += format(ord(char), '08b')

encoded_string = ""
# 2. Делим битовую строку на чанки (куски) по 6 бит
i = 0
while i < len(bit_string):
    chunk = bit_string[i:i+6]
    i += 6
    
    # Если последний чанк короче 6 бит, дополняем его нулями справа
    if len(chunk) < 6:
        chunk = chunk.ljust(6, '0')
        
    # 3. Конвертируем 6-битный чанк в число и находим символ в алфавите
    decimal_value = int(chunk, 2)
    encoded_string += BASE64_CHARS[decimal_value]
    
print(encoded_string) 

🎉 Félicitations ! 🎉

Tu as brillamment résolu la tâche ! C était difficile, mais tu as trouvé la bonne solution. Tu es encore plus proche de maîtriser la programmation ! Continue ainsi.

AD

Publicité

red-snake blue-snake green-snake

Exécution de votre code...

Assistant IA

Bonjour ! Je suis ton assistant de programmation. Pose moi toutes tes questions sur Python — je peux t expliquer les fonctions, les méthodes et t aider avec la tâche en cours !