• 1
    Entrada e saída
    • Tarefas
  • 2
    Condições
    • Tarefas
  • 3
    Loop for
    • Tarefas
  • 4
    Strings
    • Tarefas
  • 5
    Loop while
    • Tarefas
  • 6
    Listas
    • Tarefas
  • 7
    Matrizes 2D
    • Tarefas
  • 8
    Dicionários
    • Tarefas
  • 9
    Conjuntos
    • Tarefas
  • 10
    Funções e recursão
    • Tarefas
  • к

Lição 4. Lines

Dificuldade:

Tarefa«Jogos esportivos»

💻 Python

escreva um programa que converta o valor da linha para o formato Base64 usando a codificação ASCII.

rn

nota: & nbsp; esta tarefa usa uma versão do Base64 sem preenchimento (o símbolo & nbsp; = não é adicionado ao final).

rn

O algoritmo Base64 converte dados binários em um formato de texto, usando apenas 64 símbolos ASCII seguros para impressão. A ideia principal é pegar 3 bytes (24 bits) dos dados de entrada e apresentá-los na forma de 4 caracteres (4 * 6 bits = 24 bits).

rn

codificação ( to_base64 ):

rn
    rn
  1. a linha é convertida em uma sequência de códigos ASCII.
  2. rn
  3. cada código ASCII é apresentado como um número binário de 8 bits.
  4. rn
  5. todas essas sequências de 8 bits são combinadas em uma longa linha de bits.
  6. rn
  7. esta longa linha é dividida em grupos de 6 bits.
  8. rn
  9. cada grupo de 6 bits é convertido em um número decimal (de 0 a 63).
  10. rn
  11. este número é usado como um índice para selecionar um símbolo do alfabeto Base64 ( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ).
  12. rn

Formato de entrada

Uma linha é fornecida na entrada.

Formato de saída

Linha & mdash; O resultado da transformação.

Exemplo

Entrada

homem

Saída

Twfu

Dica

There will be no clue here, decide for yourself!

main.py
Teste 1
Teste 2
Teste 3
Teste 4
Teste 5
Teste 6
Teste 7
Teste 8
Teste 9
Teste 10
Solução do desenvolvedor
# Константа с символами алфавита 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) 

🎉 Parabéns! 🎉

Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.

AD

Publicidade

red-snake blue-snake green-snake

Executando seu código...

Assistente de IA

Olá! Sou seu assistente de programação. Faça qualquer pergunta sobre Python — posso explicar funções, métodos e ajudá-lo com a tarefa atual!