मैंने इनपुट स्ट्रिंग को शब्दों की सूची में विभाजित करने के लिए एक फ़ंक्शन बनाया और फिर प्रत्येक शब्द में अक्षरों को इसके स्थानांतरित समकक्ष के साथ प्रतिस्थापित किया, लेकिन जब मैं शिफ्ट को 30 से अधिक पर सेट करता हूं तो यह अपरिवर्तित प्रिंट करता है।

def ceaser_cipher_encoder(string , num):
        alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
                    "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

        new_string = ""
        string_list = string.split(" ")
        new_list = []
        for word in string_list:
                word1 = ""
                for charecter in word:
                        letter_position = alphabet.index(charecter)
                        letter_position_with_shift = letter_position + num
                        if letter_position_with_shift > 25:
                                letter_position_with_shift = 0 + ((letter_position - 25) - 1)
                        word1 += charecter.replace(charecter, alphabet[letter_position_with_shift])

                new_list.append(word1)
                end_string = " ".join(new_list)



        return end_string




message = ceaser_cipher_encoder("hello dad", 35)
print(message)
2
user16414459 9 जुलाई 2021, 15:34

1 उत्तर

सबसे बढ़िया उत्तर

यहां एक उपयोगी ट्रिक है मॉड्यूलस ऑपरेटर (%) का उपयोग करना। यह आपके लिए शिफ्ट का ख्याल रखेगा।

यहां बताया गया है कि मैं कैसे करूंगा:

def ceaser_cipher_encoder(string , num):
        alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
                    "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

        new_string = ""
        for c in string:
                new_string += alphabet[(alphabet.index(c) + num) % len(alphabet)]
        return new_string

मान लें कि c "y" है और num 10 है। तब आपके पास alphabet.index(c) 24 के बराबर होगा, इसलिए शिफ्ट 34 वापस आ जाएगी। चूंकि 34 मॉड्यूलो 26 8 है, यह संलग्न होगा alphabet[8] ("i") से new_string तक।

मैंने हार्ड-कोडिंग 26 के बजाय len(alphabet) का उपयोग किया ताकि आप अपना अक्षर बदल सकें और कोड अभी भी काम करेगा।

5
Alexandre Marcq 9 जुलाई 2021, 12:55