计算 - Python GCSE

时间:2016-02-14 17:02:06

标签: python encryption caesar-cipher

我目前正在尝试为学校编写一个程序,以加密和解密输入的消息。我的代码目前有效,但还不完整。我无法尝试允许它从2-26的值输入偏移量,我无法重复问题然后继续使用代码,直到它获得正确的值。现在它只是在输入错误的数字但仍继续使用代码时说无效消息。此外,我需要加密或解密的消息只在字母表中没有其他符号或键。有人可以帮忙吗?这是我目前的代码。

result = ''

message = ''

choice = ''

offset=int(input("Enter an offset: "))

if offset >25 or offset <0:

    print("Invalid offset, please enter another offset: ")
else:

    print("Okay")


while choice != '3':


    choice = input("\nDo you want to encrypt or decrypt the message?\nEnter 1 to Encrypt, 2 to Decrypt, 3 to Exit Program: ")

    if choice == '1':
       message = input("\nEnter the message to encrypt: ")

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

    print (result + '\n\n')
    result = ''

    elif choice == '2':
        message = input("\nEnter the message to decrypt: ")

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

    print (result + '\n\n')
    result = ''

    elif choice != '3':
        print ("You have entered an invalid choice. Please try again.\n\n")

1 个答案:

答案 0 :(得分:0)

好的,所以我还没有解决你只换字母的问题,因为我不想做你所有的功课(提示:你必须强迫你的{{1在字母表值之间)。但是我已经为你循环了一切。

chr(number)

所以你现在拥有的是两个函数而不是一个单一的脚本。注意结果,选择变量等是如何被删除的 - 现在它们都在函数内声明,所以你不再需要它们了!第一个函数找到你的偏移量(并在最后调用,启动程序),如果它在正确的范围内,它传递了encrypt_fun函数的偏移值,如果它不是那么它运行再次找到find_offset。我试图保持你的while循环和它一样多 - 但它已经简化了一点。请注意您的def find_offset(): offset = int(input("Enter an offset: ")) if offset > 25 or offset < 0: print("Invalid offset, please enter another offset: ") find_offset() else: print("Okay") encrypt_fun(offset) def encrypt_fun(offset): choice = '' while choice != '3': choice = input("\nDo you want to encrypt or decrypt the message?\nEnter 1 to Encrypt, 2 to Decrypt, 3 to Exit Program: ") if choice == '1': message = input("\nEnter the message to encrypt: ") for i in range(0, len(message)): result = chr(ord(message[i]) - offset) print(result, end=''), elif choice == '2': message = input("\nEnter the message to decrypt: ") for i in range(0, len(message)): result = chr(ord(message[i]) + offset) print(result, end=''), elif choice != '3': print("You have entered an invalid choice. Please try again.\n\n") find_offset() 声明如何被删除。好吧,因为它是一个循环它无论如何都会被重置,所以它是不必要的。

希望这能帮到你一点点。祝你的GCSE好运。 帮助您进行加密的链接:https://inventwithpython.com/chapter14.html