Python第五章实例和实战作业
实例01:使用字符串拼接输出一个关于程序员的笑话
代码如下:
代码运行结果如下:
实例02:截取身份证号码中的出生日期
代码如下:
代码运行结果如下:
实例03:输出被@的好友名称
代码如下:
代码运行结果如下:
实例04:通过好友列表生成全部被@的好友
代码如下:
代码运行结果如下:
实例05:不区分大小写验证会员是否唯一
代码如下:
代码运行结果如下:
实例06:格式化不同的数值类型数据
代码如下:
代码运行结果如下:
实例07:验证输入的手机号码是否为中国移动的号码
代码如下:
代码运行结果如下:
实例08:验证是否出现危险字符
代码如下:
代码运行结果如下:
实例09:替换出现的危险字符
代码如下:
#-----------实例09:替换出现的危险字符----------#
import re #导入Python的re模块
pattern = r'(黑客)|(抓包)|(监听)|(Trojan)' #模式字符串
about = '我是一名程序员,我喜欢看黑客方面的图书,想研究一下Trojan。\n'
sub = re.sub(pattern, '@_@',about) #进行模式替换
print(sub)
about = '我是一名程序员,我喜欢看计算机网络方面的图书,喜欢开发网站。'
sub = re.sub(pattern, '@_@',about) #进行模式替换
print(sub)
代码运行结果如下:
实例10:输出被@的好友名称(应用正则表达式)
代码如下:
#----------实例10:输出被@的好友名称(应用正则表达式)----------#
import re
str1 = '@明日科技 @扎克伯格 @俞敏洪'
pattern = r'\s*@'
list1 = re.split(pattern,str1) #用空格和@或单独的@分割字符串
print('您@的好友有:')
for item in list1:
if item != "": #输出不为空的元素
print(item) #输出每个好友名
代码运行结果如下:
实战一:打印象棋口诀
代码如下:
#----------实战一:打印象棋口诀----------#
str1 = '马走日'
str2 = '象走田'
str3 = '车走直路炮翻山'
str4 = '士走斜线护将边'
str5 = '小卒一去不复返'
str6 = ' ,'
str7 = ' 。'
print('象棋口诀:')
print(str1 + str6)
print(str2 + str6)
print(str3 + str6)
print(str4 + str6)
print(str5 + str7)
代码运行结果如下:
实战二:判断车牌归属地
代码如下:
#----------实战二:判断车牌归属地----------#
string = '津A·12345',\
'沪A·23456',\
'京A·34567'
for i in range(len(string)):
print('第' + str(i+1) + '张车牌号码:\n' + string[i])
if string[i][0] == '津':
print('这张号牌的归属地:天津')
if string[i][0] == '沪':
print('这张号牌的归属地:上海')
if string[i][0] == '京':
print('这张号牌的归属地:北京')
代码运行结果如下:
实战三:模拟微信抢红包
代码如下:
#----------实战三:模拟微信抢红包----------#
import random
import decimal
print('----------模拟微信抢红包----------')
money = input("请输入要装入红包的总金额:")
nums = int(input("请输入红包的个数(个):"))
money_all = decimal.Decimal(money)
for num in range(1,nums+1):
if num == nums:
last = money_all
else:
last = money_all/2*decimal.Decimal(str(random.random()))
last = last.quantize(decimal.Decimal('0.00'))
money_all = money_all - last
print('第%d个红包:%s' %(num,str(last)))
代码运行结果如下:
实战四:显示实时天气预报
代码如下:
#----------实战四:显示实时天气预报----------#
weather = '2018年4月17日 \t天气预报:{:s} \t{:d}℃~{:d}℃ \t微风转西风3~4级'
print(weather.format('晴',20,7))
print('08:00 \t天气预报:{:s} \t{:d}℃ \t微风'.format('晴',13))
print('12:00 \t天气预报:{:s} \t{:d}℃ \t微风'.format('晴',19))
print('16:00 \t天气预报:{:s} \t{:d}℃ \t西风3~4级'.format('晴',18))
print('20:00 \t天气预报:{:s} \t{:d}℃ \t西风3~4级'.format('晴',15))
print('00:00 \t天气预报:{:s} \t{:d}℃ \t微风'.format('晴',12))
print('04:00 \t天气预报:{:s} \t{:d}℃ \t微风'.format('晴',9))
代码运行结果如下:
课后作业:
1.匹配8位密码,既要有数字,又要有字母,也要有字符
代码如下:
#----匹配8位密码,既要有数字,又要有字母,也要有字符----#
import re
pattern = r'^\w{8}$'
print('请输入8位密码:')
string = input()
match = re.match(pattern,string,re.I)
print(match)
print('匹配值的起始位置:',match.start())
print('匹配值的结束位置:',match.end())
print('匹配位置的元组:',match.span())
print('要匹配的字符串:',match.string)
print('匹配值数据:',match.group())
代码运行结果如下:
2.匹配身份证号码是属于广东省的
代码如下:
#----------匹配身份证号码是属于广东省的----------#
import re
pattern = r'(44[0-9]{4}\d{12})'
print('请输入18位身份证:')
string = input()
match = re.match(pattern,string)
if match == None:
print(string,'不属于广东省身份证')
else:
print(string, '属于广东省身份证')
代码运行结果如下: