目录
任务1:编写代码,输出由星号(*)组成的三角形图形,并且可以灵活的控制图案的大小。( 改进:输出菱形图像 )
任务2:编写一个程序,要求输入一个字符串,然后输入一个整数作为凯撒加密算法的密钥,输出字符串加密后的结果
任务3:利用正则表达式编写一个程序,用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词
任务1:编写代码,输出由星号(*)组成的三角形图形,并且可以灵活的控制图案的大小。( 改进:输出菱形图像 )
思路:首先使用一个for循环输出菱形的上半部分,然后再使用一个for循环输出菱形的下半部分;其中center()是字符串排版方法,参数n**7表示排版后字符串长度。
参考代码:
n = int(input('输入一个整数:'))
for i in range(n):
print(('* '*i).center(n*7))
for i in range(n,0,-1):
print(('* '*i).center(n*7))
运行结果:
任务2:编写一个程序,要求输入一个字符串,然后输入一个整数作为凯撒加密算法的密钥,输出字符串加密后的结果
相关知识:凯撒加密算法,是指把原始字符串中的每个英文字母都使用它在字母表中后面第k个字母进行替换,是一种比较经典的加密算法
思路:把小写字母和大写字母分别循环左移k位,然后根据循环移位(借助于切片实现循环移位)之前和之后的字符串构造映射表,最后使用这个映射表给对定的字符串进行替换。
参考代码:
import string
def kaisa():
s = input('请输入一个字符串:')
k = int(input('请输入一个整数来作为秘钥:'))
lower = string.ascii_lowercase
upper = string.ascii_uppercase
before = string.ascii_letters
after = lower[k:] + lower[:k] + upper[k:] + upper[:k]
table = str.maketrans(before,after)
out = s.translate(table)
print(out)
kaisa()
运行结果:
任务3:利用正则表达式编写一个程序,用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词
参考代码1:
import re
w = input('请输入一段英文:')
s = re.split('[\. ]',w)
l = ','.join(s)
print(re.findall(r'\b[a-zA-Z]{3}\b',l))
运行结果1:
参考代码2:
import re
w = input('请输入单词:')
l=re.compile(r'\b[a-zA-Z]{3}\b')
print(l.findall(w))
运行结果2:
需要了解的相关知识:search()和match()都只匹配一次;match()必须从第一位开始匹配(包含是无效的);而search()是只要这段字符中有能够正则匹配上的就成功。findall()匹配成功就返回列表,可以匹配多次
有关正则表达式的链接如下:
在线测试正则表达式: https://regexr-cn.com/
练习正则表达式: 编程胶囊-打造学习编程的最好系统