在一定的值范围内进行编码和解码

2024-06-25 07:08:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码差不多完成了,我只是在努力解码/编码的某一部分。当我尝试用28来编码ABC时,它返回的是符号而不是字母。但是,它适用于小写字母。我不完全确定如何修复它,我正在寻求帮助。我并不是想彻底改变我的代码,而是保持原样,我认为我只是缺少正确的值或操作。你知道吗

这是我目前的代码:

def encode_or_decode(encode_or_decode_choice, str_to_change, key):

 if encode_or_decode_choice == "encode":
    new_str = ""
    for i in range(len(str_to_change)):
        shifter = ord(str_to_change[i])
        shift1 = key
        if shifter + shift1 > 122:
            shift1 = shift1 - (122 - shifter)
            shift1 = shift1 % 26
            new_str = new_str + chr(shift1 + 96)
        elif shifter + shift1 < 90:
            shift1 = shift1 - (90 - shifter)
            shift1 = shift1 % 26
            new_str = new_str + chr(shift1 + 64)
        else:
            new_str = new_str + chr(shifter + key)
    return new_str

 elif encode_or_decode_choice == "decode":
    new_str = ""
    for i in range(len(str_to_change)):
        shifter = ord(str_to_change[i])
        shift1 = key
        if shifter + shift1 > 122:
            shift1 = shift1 - (122 - shifter)
            shift1 = shift1 % 26
            new_str = new_str + chr(shift1 + 96)
        elif shifter + shift1 > 90:
            shift1 = shift1 - (90 - shifter)
            shift1 = shift1 % 26
            new_str = new_str + chr(shift1 + 64)
        else:
            new_str = new_str + chr(shifter - key)
    return new_str
 else:
    print("Bad Input")
    encode_or_decode_test()

def encode_or_decode_test():
  desc1 = True
  while desc1 == True:
      result = encode_or_decode(str(input("Would you like to encode or decode? ")), str(input("Enter a string: ")), int(input("Enter a key (integer): ")))
      print("Encoding or decoding given word based off decision, by given key:", result)
      decisions = str(input("Would you like to encode or decode again? (y or n) "))
      if decisions == "y":
          desc1 = True
      else:
          desc1 = False


def main():
    encode_or_decode_test()

Tags: ortokeynewinputifchangeelse