Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

text crypter program dosent give right results

when you crypt a text it works but when you try to uncrypt in it gives weird result. My code was working but it suddenly broke. The things is I don’t know if crypting part or uncrypting part is broken i would appreciate any help.


abc = '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'
code = '! @ # $ % ^ & * ( ) _ + § ± , . / < > ? | ` ~ [ ] {'
code2 = '{ ] [ ~ ` | ? > < / . , ± § + _ ) ( * & ^ % $ # @ !'


while True:
    print()
    print('--------------')
    print('[1] text -> code\n[2] code -> text')
    print('--------------')
    inp = input('==> ')

# encrypting chosen
    if inp == '1':
        print('--------------')
        print('enter the text')
        print('--------------')
        inp = input('==> ')
        print('-----code-----')
        # for every character in the text given this runs
        for i in inp:
            # gets a random number between 1 and 2 because there is two diffirent alpabets
            # every letter will be cyrpted depending on a random alpabet
            rand = random.randint(1, 2)
            # gets the index for the character in abc
            ind = abc.index(i)
            if rand == 1:
                # prints the index in code2(1th alpabet) and adds '∑' so program know it belongs to 1th alpabet
                print(code2[ind], '∑', sep='', end='')
            elif rand == 2:
                # prints the index in code(@th alpabet) and adds '¥' so program know it belongs to 1th alpabet
                print(code[ind], '¥', sep='', end='')
# decrypting chosen
    elif inp == '2':
        print()
        print('--------------')
        print('enter the code')
        print('--------------')
        inp = input('==> ')
        print('-----text-----')
        # for every character in the text given this runs
        for i in inp:
            # checks the character next to the actual character if it is '∑'
            # to know which alpabet it belongs to
            if inp[inp.index(i)+1] == '∑':
                # gets the index and print the same index in abc
                ind = code2.index(i)
                print(abc[ind], end='')

            elif inp[inp.index(i)+1] == '¥':
                ind = code.index(i)
                print(abc[ind], end='')

    else:
        pass

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

This does what you want. Note that I add your alphabet shift BEFORE the encoded character. That way, when iterating through the encoded text, I can just set the correct decoding alphabet.

import random

abc  ='abcdefghijklmnopqrstuvwxyz'
code ='!@#$%^&*()_+§±,./<>?|`~[]{'
code2='{][~`|?></.,±§+_)(*&^%$#@!'

while True:
    print('\n--------------')
    print('[1] text -> code\n[2] code -> text')
    print('--------------')
    inp = input('==> ')

# encrypting chosen
    if inp == '1':
        print('--------------')
        print('enter the text')
        print('--------------')
        inp = input('==> ')
        print('-----code-----')
        # for every character in the text given this runs
        for i in inp:
            # gets a random number between 1 and 2 because there is two diffirent alpabets
            # every letter will be cyrpted depending on a random alpabet
            rand = random.randint(1, 2)
            # gets the index for the character in abc
            ind = abc.index(i)
            if rand == 1:
                # prints the index in code2(1th alpabet) and adds '∑' so program know it belongs to 1th alpabet
                print('∑', code2[ind], sep='', end='')
            elif rand == 2:
                # prints the index in code(@th alpabet) and adds '¥' so program know it belongs to 1th alpabet
                print('¥', code[ind], sep='', end='')
# decrypting chosen
    elif inp == '2':
        print()
        print('--------------')
        print('enter the code')
        print('--------------')
        inp = input('==> ')
        print('-----text-----')
        # for every character in the text given this runs
        which = code
        for i in inp:
            if i == '∑':
                which = code2
            elif i == '¥':
                which = code
            else:
                ind = which.index(i)
                print(abc[ind], end='')

A better design would have an encode function and a decode function that return strings, thereby allowing the caller to decide what to DO with the strings.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading