实现功能:
在用户留下的接受信息方式中,有可能有微信,QQ,邮箱,短信多种联系方式,你管理着一份用户信息表,在需要发通知时,无需你对发送方式进行归类再分别发送,程序能帮助你以用户留下的不同方式联系他们。
运行结果:
![](http://upload-images.jianshu.io/upload_images/1512874-ff3abe2e690bacd9.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
所有的用户信息维护在一个txt文件中:
>QQ,73465937, Chenxiansheng
WeiXin,ffaazf, Xufuren
DuanXin, 1234567890, Wangxiaojie
Email, 111@163.com, Zenglingdao
设计思路:
读用户信息文件,根据信息文件的第一个关键字判断发送方式,调用相应的发送函数,回到主程序将信息内容发送出去。
首先,进行4种发送方式程序的编写:
每种发送发送要接收的参数是发送的内容(message)和发送方式对应的地址(addr)
```
def in_youjian(message,addr):
printu"发邮件("+message+u")给"+addr
def in_weixin(message,addr):
printu"发微信("+message+u")给"+addr
def in_QQ(message,addr):
printu"发QQ("+message+u")给"+addr
def in_duanxin(message,addr):
printu"发短信("+message+u")给"+addr
```
其次,是读取用户信息程序的编写:
```
f=open(custom_info,'r') #以‘r’读形式打开,用户信息文件
text=f.readlines() #调用readlines()函数,读取文件的全部内容存入text中
forline in text:
x=line.strip().split(',')#使用for循环,对text中的每行内
容line以‘,’分开,存入x中
```
在x中,读取text中每行获得的x的第一个元素x[0]存储着关于发送方式的信息:QQ,WeiXin,DuanXin,Email信息,所有需使用x[0]去调用函数,方法是把4个函数封装在字典中,用key-value的方式去对应x[0]与函数的关系。
封装函数:
```
send={
'QQ':in_QQ,
'WeiXin':in_weixin,
'DuanXin':in_duanxin,
'Email':in_youjian
}
```
在调用其中的函数时,使用这种方式把函数的参数信息传人:send[key](message,addr),其中,x[0]存储着关于发送方式的信息,x[1]存储着关于发送方式的接受地址信息,所以在读取用户信息程序后面加上:
```
send[x[0]](message,x[1]) #即可调用发送函数
```
现在在读取用户信息的函数中,需要传入的变量就是用户信息文件名custom_info与要发送的通知message,如要发送的是一条股票通知,取函数名gupiao:
```
def gupiao(message,custom_info):
f=open(custom_info,'r')
text=f.readlines()
forline in text:
x=line.strip().split(',')
send[x[0]](message,x[1])
```
测试程序:
```
if __name__=="__main__":
gupiao(u"000001买,低于8.5买,000002卖,高于11.2卖",'custom_info.txt')
```