"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا تقوم وظيفة My Caesar Cipher في Python بعرض آخر حرف تم تحويله فقط؟

لماذا تقوم وظيفة My Caesar Cipher في Python بعرض آخر حرف تم تحويله فقط؟

تم النشر بتاريخ 2024-11-08
تصفح:863

Why Does My Caesar Cipher Function in Python Only Display the Last Shifted Character?

وظيفة تشفير قيصر في بايثون: سلاسل مشفرة

عند تنفيذ وظيفة تشفير قيصر في بايثون، تنشأ مشكلة شائعة حيث يتم النص النهائي المشفر يعرض فقط الحرف الأخير الذي تم تغييره. لحل هذه المشكلة، من الضروري فهم المشكلة التي تسبب هذا السلوك.

في التعليمات البرمجية المتوفرة، تتكرر الحلقة فوق كل حرف في النص العادي. بالنسبة للأحرف الأبجدية، يقوم بتغيير رمز ASCII الخاص بالحرف بناءً على قيمة الإزاحة المتوفرة. ومع ذلك، يتم إلحاق كل حرف تم إزاحته بسلسلة فارغة تسمى cipherText داخل الحلقة. ونتيجة لذلك، يتم عرض الحرف الأخير فقط كنص مشفر.

لتصحيح هذه المشكلة، يجب إنشاء النص المشفر داخل الحلقة وإعادته بمجرد معالجة كافة الأحرف. يمكن تحقيق ذلك عن طريق تعديل الكود كما يلي:

def caesar(plainText, shift):
    cipherText = ""
    for ch in plainText:
        if ch.isalpha():
            stayInAlphabet = ord(ch)   shift
            if stayInAlphabet > ord('z'):
                stayInAlphabet -= 26
            finalLetter = chr(stayInAlphabet)
        cipherText  = finalLetter

    return cipherText

مع هذا التعديل، تتم تهيئة سلسلة cipherText مرة واحدة ويتم إلحاق كافة الأحرف المتغيرة بها داخل الحلقة. عندما تعود الدالة، تحتوي السلسلة المشفرة على كافة الأحرف التي تم إزاحتها، على النحو المنشود.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3