写Pig Latin 小程序(简单的古典加密方法-置换)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Pig Latin 是一种傻傻的,有些可爱的语言,在学习这个小程序时,使我重新感受到了古典密码学的魅力——无论加密方法如何变迁,“置换”和“代换”的思想总是这座金字塔的基石。而Pig Latin的语言,正是和“置换”密码有着异曲同工之妙。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是Pig Latin ?

Pig Latin 会改变消息的顺序,以特定的语法输出:
当一个单词以元音字母(aeiouy)开头,就会在末尾添加yay;当一个单词以辅音字母或者辅音簇(如ch,gr)开头,该辅音就会移动到末尾,并加上ay。

二、思路

1.用input函数输入要翻译的消息
2.要针对消息中的每一个单词进行处理,用strip方法将消息分割成列表
3.处理单词:

处理什么怎么处理
(1)单词开头和结尾的非字符从原单词中删除,用prefixNonLetter和postfixNonLetter变量暂存
(2)非单词直接放入存储处理完成的单词的列表中
(3.)转化为全小写,方便判断首字母是否为元音使用lower 方法,但在转化前要事先记忆原单词是全大写还是首字母大写
(4). 单词开头的辅音和辅音簇从原单词中删除,用prefixConsonant变量暂存
(5). 转化为pig latin格式根据是否开头为元音字母,修改格式,决定是否在末尾加上prefixConsonant. 最后恢复原单词大小写格式,同时添加前后非字母字符

6.将修改好的单词列表重新组合

三、代码

'''该程序的目的在于,将输入的消息(message),以Pig Latin语法(加密)输出'''

#输入消息
message = input("Please input a message, then you will get one that has pig latin style:\n ")
#将消息切分成为单词列表
words = message.split()
pig_latins = []

#对每个单词检查格式,转换
for word in words:
    #检查单词开头是否有非字母
    prefixNonLetter = ""
    while len(word) > 0 and not word[0].isalpha():
        prefixNonLetter += word[0]
        word = word[1:]
        #若不是单词,例如1_000
        if len(word) == 0:
            pig_latins.append(prefixNonLetter)
            continue
    #检查单词末尾是否有非字母
    postfixNonLetter = ""
    while not word[-1].isalpha():
        postfixNonLetter += word[-1]
        word = word[:-1]
    #记录是否为全大写,或者首字符大写
    wasUpper = word.isupper()
    wasTitle = word.istitle()
    #调整顺序,添加字符,使之为pig latin 类型
    voval = ('a', 'e', 'i', 'o', 'u', 'y')
    word = word.lower()
    prefixConsonant = ""
    while len(word) > 0 and not word[0] in voval:
        prefixConsonant += word[0]
        word = word[1:]


    #若为元音,加yay,若为辅音,添加到末尾,再加ay
    if len(prefixConsonant) == 0:
        word += "yay"
    else:
        word = word + prefixConsonant + 'ay'
    #回复原先全大写 或者 首字母大写的格式
    if wasTitle:
        word = word.title()
    if wasUpper:
        word = word.upper()
    #重新添加上首尾的非字符
    word = prefixNonLetter + word + postfixNonLetter
    pig_latins.append(word)

#将被打散的单词拼接,组成新的pig latin 句子
pig_latin = ' '.join(pig_latins)

print(pig_latin)


总结

非常简单的小代码,练习字符串及其方法使用,感谢捧场,加油,自己。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值