[Python] 字符串 *** 作实例

[Python] 字符串 *** 作实例,第1张

目录
  • 实例1:获取星期字符串
  • 实例2:获取月份字符串
  • 实例3:恺撒密码

实例1:获取星期字符串

程序读入一个表示星期几的数字(1~7),输出对应的星期字符串名称。例如,输入 3,返回“星期三”。

代码如下:

weekstr = "星期一星期二星期三星期四星期五星期六星期日"
weekid = eval(input("请输入星期数字(1~7):"))
pos = (weekid - 1) * 3                  # 获取对应星期的起始位置
print(weekstr[pos: pos+3])        

程序运行结果如下:

请输入星期数字(1~7):6
星期六

题目通过在字符串中截取适当子串实现星期名称的查找。问题的关键在于找出子串的剪切位置。因为每个星期日期的缩写都由 3 个字符组成,如果知道星期日期字符串的起始位置,就能很容易获得缩写子串。 通过下面语句,可以获得从起始位置pos开始且长度为 3 的子串:

weekAbbr = weekstr[pos: pos+3]

使用字符串作为查找表的缺点是,所剪切的子字符串长度必须相同。如果各缩写表示长度不同,还需要其他语句辅助。

实例2:获取月份字符串

参考实例1,实现一个 “获取月份字符串” 的程序,要求根据1~12的数字返回对应月份的名称。

思路和实例1差不多,但是因为 十一月 和 十二月 是 3 个字,所以我们增加了判断语句。

代码如下:

monthstr = "一月二月三月四月五月六月七月八月九月十月十一月十二月"
monthid = eval(input("请输入月份数字(1~12):"))
if monthid > 0 and monthid <= 10:      # 1月到 10 月的情况
    pos = (monthid - 1) * 2                      # 获取对应月份的起始位置
    print(monthstr[pos: pos + 2])
elif monthid == 11:                                # 11 月的情况
    pos =  (monthid - 1) * 2                      # 获取对应月份的起始位置
    print(monthstr[pos: pos + 3])
elif monthid == 12:                                 # 11 月的情况
    pos = (monthid - 1) * 2 + 1                 # 获取对应月份的起始位置
    print(monthstr[pos: pos + 3])
else:
    print("输入有误!")

程序运行结果如下:

请输入月份数字(1~12):6
六月
请输入月份数字(1~12):11
十一月
请输入月份数字(1~12):12
十二月
请输入月份数字(1~12):13
输入有误!

实例3:恺撒密码

设想在某些情况下给朋友传递字条信息,但又不希望传递中途被第三方看懂这些信息,因此需要对字条信息进行加密处理。传统加密算法很多,这里介绍一种非常简单的加密算法——凯撒密码。 凯撒密码是古罗马凯撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面第三个字符,对应关系如下:

原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

原文字符 P,其密文字符 C 满足如下条件:
C = ( P + 3 ) mod 26
解密方法反之,满足:
**P = ( C - 3 ) mod 26

假设用户可能使用的信息仅包括小写字母 a~z,则该微实例对应的加密代码如下:

plaincode = input("请输入原文:")
print("密文:")
for p in plaincode:
    if ord("a") <= ord(p) <= ord("z"):          # 判断是否在 a ~ z 之间
        print(chr(ord("a") + (ord(p) - ord("a") + 3) % 26),end='')
    else:
        print(p, end=' ')

程序运行结果如下:

请输入原文:python is an excellent language
密文:
sbwkrq lv dq hafhoohqw odqjxdjh

这次的分享就到这里啦,你都看懂了吗

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/734672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存