• 1
    إدخال وإخراج البيانات
    • المهام
  • 2
    الشروط
    • المهام
  • 3
    حلقة for
    • المهام
  • 4
    السلاسل النصية
    • المهام
  • 5
    حلقة while
    • المهام
  • 6
    القوائم
    • المهام
  • 7
    مصفوفات ثنائية الأبعاد
    • المهام
  • 8
    القواميس
    • المهام
  • 9
    المجموعات
    • المهام
  • 10
    الدوال والتكرار
    • المهام
  • к

درس 4. Lines

الصعوبة:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

مسألة«ألعاب رياضية»

💻 Python

اكتب برنامجًا يحول قيمة النص إلى تنسيق Base64 باستخدام ترميز ASCII. ملاحظة:   تستخدم هذه المهمة إصدارًا من Base64 بدون تعبئة (الرمز   = لا يُضاف إلى النهاية). تقوم خوارزمية Base64 بتحويل البيانات الثنائية إلى تنسيق نصي، باستخدام 64 رمز ASCII آمنة للطباعة فقط. الفكرة الرئيسية هي أخذ 3 بايت (24 بت) من بيانات الإدخال وعرضها في شكل 4 أحرف (4 * 6 بت = 24 بت).

الترميز (to_base64):

  1. يتم تحويل النص إلى سلسلة من رموز ASCII.
  2. يتم تمثيل كل رمز ASCII كرقم ثنائي مكون من 8 بت.
  3. يتم دمج كل هذه التسلسلات الثنائية المكونة من 8 بت في سلسلة بتات طويلة واحدة.
  4. يتم تقطيع هذه السلسلة الطويلة إلى مجموعات من 6 بت.
  5. يتم تحويل كل مجموعة مكونة من 6 بت إلى رقم عشري (من 0 إلى 63).
  6. يُستخدم هذا الرقم كمؤشر لاختيار رمز من أبجدية Base64 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").

تنسيق الإدخال

يتم إدخال سطر إلى المدخلات.

تنسيق الإخراج

السطر — نتيجة التحويل.

مثال

إدخال

رجل

إخراج

توفو

تلميح

There will be no clue here, decide for yourself!

main.py
اختبار 1
اختبار 2
اختبار 3
اختبار 4
اختبار 5
اختبار 6
اختبار 7
اختبار 8
اختبار 9
اختبار 10
حل المطور
# Константа с символами алфавита 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) 

🎉 تهانينا! 🎉

لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.

AD

إعلان

red-snake blue-snake green-snake

جارٍ تشغيل الكود...

مساعد الذكاء الاصطناعي

مرحباً! أنا مساعدك في البرمجة. اسألني أي شيء عن Python — يمكنني شرح الدوال والطرق ومساعدتك في المهمة الحالية!