凯撒密码文字加密器

时间:2019-04-13 14:32:12

标签: python

我正在尝试执行代码的一部分,如果您没有输入正确的键(例如,将字母更改为数字,例如message = hi key = 2 result = fg),如果您键入a字母,它将返回“请重试”消息或类似内容,然后返回“再次输入密钥:”。

我正在尝试创建一个凯撒密码,并使它对用户更友好,我希望他们不能输入无法接受的文本。例如。如果我想要一个int(input),他们将不得不输入一个数字,如果不是,它将再次询问并显示一条消息,要求再次尝试。 我试图使用类似'if key <='1'或> ='25':'的代码,但是不管用什么输入,它都会打印出来,而且如果我输入了字母,我也想出错较早。

import time
import sys

result = ''
message = ''
choice = ''

pw = 'pass'

# Password setup
while pw != 0:
    pw = input("Password: ")
    if pw == 'pass':

        # Choice prompt.

        while choice != 0:
            choice = input("\nDo you want to encrypt or decrypt the message?\nEnter 1 to encrypt or 2 to decrypt or 3 to exit: ")

        # Entering a message to encrypt.
        if choice == '1':

            message = input("\nEnter the message for encryption: ")
            key = int(input("\nEnter the key: "))

           ****if key <= '1' or >= '25':*** here is what I was talking about, it does not work however and i havent added it to the decoding side yet (not actually in code)

                for i in range(0, len(message)):
                    result = result + chr(ord(message[i]) - key)

                    print('\n' + result + '\n')
                    result = ''
                    time.sleep(0.5)

            else:
                print("\nYou have entered an invalid input! Please try again.")

        # Entering a message to decrypt.
        elif choice == '2':

            message = input("\nEnter the message for decryption: ")
            key = int(input("\nEnter the key: "))

            for i in range(0, len(message)):
                result = result + chr(ord(message[i]) + key)

            print('\n' + result + '\n')
            result = ''
            time.sleep(0.5)

        # Closes the program.
        elif choice == '3':
            sys.exit(0)

        # Error message when inputting incorrectly.
        elif choice != '0':
            print("\nYou have entered an invalid input! Please try again.\n")

# Exits program if password is incorrect.
elif pw != 'pass':
    sys.exit(0)

我希望代码会显示一条错误消息,并再次询问是否输入了无效的密钥。

但是这种情况不会发生,如果输入字母,则代码基本上会中止,无论您使用什么数字,它都可以正常工作。请帮忙。

此外,如果您可以将翻译后的代码导出到.txt文件中,那很好,但无论哪种方式都可以。

0 个答案:

没有答案