一.实验项目名称:《零基础学Python》第五章实战、实例以及两道作业题
二.实验目的和要求:了解和掌握操作字符串的方法和正则表达式的应用
三.实验环境:IDLE(Python 3.9 64-bit)
四.实验过程:
- 实例01 使用字符串拼接输出一个关于程序员的笑话
点击查看代码
programmer_1='程序员甲:搞IT太辛苦了,我想换行......怎么办?'
programmer_2='程序员乙:敲一下回车键'
print(programmer_1+'\n'+programmer_2)
运行结果:
- 实例02 截取身份证号码中的出生日期
点击查看代码
programer_1='你知道我的生日吗?'
print('程序员甲说:',programer_1)
programer_2='输入你的身份证号。'
print('程序员乙说:',programer_2)
idcard='123456199006277890'
print('程序员甲说:',idcard)
birthday=idcard[6:10]+'年'+idcard[10:12]+'月'+idcard[12:14]+'日'
print('程序员乙说:','你是'+birthday+'出生的,所以你的生日是'+birthday[5:])
运行结果:
- 实例03 输出被@的好友的名称
点击查看代码
str1='@明日科技 @扎克伯格 @俞敏洪'
list1=str1.split(' ')
print('您@的好友有:')
for item in list1:
print(item[1:])
运行结果:
- 实例04 通过好友列表生成全部被@的好友
点击查看代码
list_friend=['明日科技','扎克伯格','俞敏洪','马云','马化腾']
str_friend=' @'.join(list_friend)
at='@'+str_friend
print('您要@的好友:',at)
运行结果:
- 实例05 不区分大小写验证会员名是否唯一
点击查看代码
username_1='|MingRi|mr|mingrisoft|WGH|MRSoft|'
username_2=username_1.lower()
regname_1=input('输入要注册的会员名称:')
regname_2='|'+regname_1.lower()+'|'
if regname_2 in username_2:
print('会员名',regname_1,'已经存在!')
else:
print('会员名',regname_1,'可以注册!')
运行结果:
- 实例06 格式化不同的数值类型数据
点击查看代码
import math
print('1251+3950的结果是(以货币形式显示):¥{:,.2f}元'.format(1251+3950))
print('{0:.1f}用科学计数法表示:{0:E}'.format(120000.1))
print('π取5位小数:{:.5}'.format(math.pi))
print('{0:d}的16进制结果是:{0:#x}'.format(100))
print('天才是由{:.0%}的灵感,加上{:.0%}的汗水。'.format(0.01,0.99))
运行结果:
- 实例07 验证输入的手机号码是否为中国移动的手机号码
点击查看代码
import re
pattern=r'(13[4-9]\d{8})$|(15[01289]\d{8})$'
mobile='13634222222'
match=re.match(pattern,mobile)
if match==None:
print(mobile,'不是有效的中国移动手机号码。')
else:
print(mobile,'是有效的中国移动手机号码。')
mobile='13144222221'
match=re.match(pattern,mobile)
if match==None:
print(mobile,'不是有效的中国移动手机号码。')
else:
print(mobile,'是有效的中国移动手机号码。')
运行结果:
- 实例08 验证是否出现危险字符
点击查看代码
import re
pattern=r'(黑客)|(抓包)|(监听)|(Trojan)'
about='我是一名程序员,我喜欢看黑客方面的图书,想研究一下Trojan。'
match=re.search(pattern,about)
if match==None:
print(about,'@安全!')
else:
print(about,'@出现了危险词汇!')
about='我是一名程序员,我喜欢看计算机网络方面的图书,喜欢开发网站。'
match=re.search(pattern,about)
if match==None:
print(about,'@安全!')
else:
print(about,'@出现了危险词汇!')
运行结果:
- 实例09 替换出现的危险字符
点击查看代码
import re
pattern=r'(黑客)|(抓包)|(监听)|(Trojan)'
about='我是一名程序员,我喜欢看黑客方面的图书,想研究一下Trojan。\n'
sub=re.sub(pattern,'@_@',about)
print(sub)
about='我是一名程序员,我喜欢看计算机网络方面的图书,喜欢开发网站。'
sub=re.sub(pattern,'@_@',about)
print(sub)
运行结果:
- 实例10 输出被@的好友名称(正则表达式)
点击查看代码
import re
str1='@明日科技 @扎克伯格 @俞敏洪'
pattern=r'\s*@'
list1=re.split(pattern,str1)
print('您@的好友有:')
for item in list1:
if item!="":
print(item)
运行结果:
- 实战01 打印象棋口诀
点击查看代码
str1='马走日 象走田 车走直路炮翻山 士走斜线护将边'
str2='小卒一去不回还'
list1=str1.split(' ')
print('象棋口诀:')
for item in list1:
print(item+',')
print(str2+'。')
运行结果:
- 实战02 判断车牌归属地
点击查看代码
chepai=["津A·12345", "沪A·23456", "京A·34567"]
for i in range(3):
print('第' + str(i + 1) + '张车牌号码:')
print(chepai[i])
if chepai[i][0]=='津':
print('这张号牌的归属地:天津')
elif chepai[i][0]=='沪':
print('这张号牌的归属地:上海')
elif chepai[i][0]=='京':
print('这张号牌的归属地:北京')
运行结果:
- 实战03 模拟微信抢红包
点击查看代码
from decimal import Decimal
import random
print('------------模拟微信抢红包-----------')
ZJE=input('请输入要装入红包的总金额(元):')
i=input('请输入红包个数(个):' )
min=0.01
je_list=[]
zje=Decimal(ZJE)
i=Decimal(i)
min=Decimal(str(min))
if zje>i*min:
for x in range(1,int(i)):
anquan_zje=(zje-(i-x)*min)
item_inf=min*100
item_sup=int(anquan_zje*100)
je=item_inf/100 if item_inf>item_sup else (Decimal(random.randint(item_inf,item_sup)))/100
zje-=je
je_list.append(je)
je_list.append(zje)
random.shuffle(je_list)
for x in range(len(je_list)):
print('第'+str(x+1)+'个红包:',str(je_list[x]),'元')
运行结果:
- 实战04 显示实时天气预报
点击查看代码
print('2018年4月17日 天气预报:晴 20℃~7℃ 微风转西风3~4级')
template='{:0>2s}\t天气预报:晴 {:s}℃\t {:s}'
context1=template.format('08:00','13','微风')
context2=template.format('12:00','19','微风')
context3=template.format('16:00','18','西风3~4级')
context4=template.format('20:00','15','西风3~4级')
context5=template.format('00:00','12','微风')
context6=template.format('04:00','9','微风')
print(context1)
print(context2)
print(context3)
print(context4)
print(context5)
print(context6)
运行结果:
- 作业01
匹配出由“数字、字母、特殊字符”这三种字符组成的8位密码
点击查看代码
import re
pattern = r'^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8}$'
string=input('请输入由数字、字母、特殊字符组成的8位密码:')
a=re.findall(pattern,string)
if a==[]:
print('匹配失败')
else:
print(a,'匹配成功')
运行结果:
- 作业02
匹配出身份证属于广东省的身份证号码(提示:广东省身份证的开头两位数字为44)
点击查看代码
#匹配出身份证属于广东省的身份证号码(提示:广东省身份证的开头两位数字为44)
import re
pattern=r'(44[0-9]\d{15})$|(44[0-9]\d{18})$|(44[0-9]\d{17})(\d|X|x)$'
haoma=input('请输入身份证号码:')
match=re.match(pattern,haoma)
if match==None:
print(haoma,'匹配失败')
else:
print(haoma,'是广东省的身份证号码')
运行结果: