python字母后移5位加密_加密插入单词和密钥,密钥将在字母表中向右移动字母...

最简单的方法是在for循环中使用函数,并使用zip组合字符串和偏移量。在def new_func(string, offsets):

outstr = ""

for char, num in zip(string, offsets):

outstr += code_char(char, int(num))

print(outstr)

加分一行版:

^{pr2}$

看它的行动(使用Python3):if __name__ == '__main__':

string = input("string: ")

offsets = input("offsets: ")

if len(string) != len(offsets):

print("They must be the same length!")

else:

print("".join([code_char(char, int(num))

for char, num in zip(string, offsets)]))

# string: abcdefgh

# offsets: 12345678

# bdfhjlnp

您还可以简单地更新现有功能以满足新的需求。在# Modified original

def code_char_string(character_string, offsets):

out_string = ""

for character, offset in zip(character_string, offsets):

number = int(offset)

characterOrd = ord(character)

characterNew = characterOrd + number

if 65 <= characterOrd <= 90:

characterNew = characterOrd + number

if characterNew > 90:

characterNewi = characterNew - 26

out_string += (chr(characterNewi))

elif characterNew <= 90:

out_string+= (chr(characterNew))

elif 97 <= characterOrd <= 122:

characterNew = characterOrd + number

if characterNew > 122:

characterNewi = characterNew - 26

out_string += (chr(characterNewi))

elif characterNew <= 122:

out_string += (chr(characterNew))

return out_string

您还可以使用以下技巧使其更易于阅读。在# Simplified readable version

def code_char_string_compact(character_string, offsets):

out_string = ""

for cord, number in zip([ord(x) for x in character_string], [int(x) for x in offsets]):

newchar = cord + number

if 65 <= cord <= 90:

out_string += chr(newchar - 26) if newchar > 90 else chr(newchar)

elif 97 <= cord <= 122:

out_string += chr(newchar - 26) if newchar > 122 else chr(newchar)

return out_string

您的函数也可以简化为一个冗长的单行线。在# oneliner awesomeness

def code_char_one_line(character_string, offsets): return "".join([chr(cord + number - 26) if 65 <= cord <= 90 < cord + number or 97 <= cord <= 122 < cord + number else chr(cord + number) for cord, number in zip([ord(x) for x in character_string], [int(x) for x in offsets])])

测试它们:string, offsets, offsets2 = "abcdefgh", "11111111", "48151623"

print(code_char_string(string, offsets), code_char_string_compact(string, offsets), code_char_one_line(string, offsets))

# bcdefghi bcdefghi bcdefghi

print(code_char_string(string, offsets2), code_char_string_compact(string, offsets2), code_char_one_line(string, offsets2))

# ejdiflik ejdiflik ejdiflik

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值