编写一个程序,接受一个电子邮件地址的列表,以及一个需要做的家务活列表
随即将家务活分配给他们。用电子邮件通知每个人分配给他们的任务。
如果你觉得需要挑战,就记录每个人之前分配家务活的记录,确保程序不会分配重复的活动
另一个可能的功能,安排程序每周自动运行一次
基础版本
import smtplib,random
# 列表
chores = ['dishes','bathroom','vacuum','walk dog']
maidDict = {'Rabbit':'Rabbit@qq.com',
'Dog':'Dog@qq.com',
'Cat':'Cat@qq.com'}
# 邮箱设置
fromMail = '' # 自行输入
secretCode = ''
smtpObj = smtplib.SMTP('smtp.qq.com',587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(fromMail,secretCode)
# 分配任务
for maidName,maidMail in maidDict.items():
randomChore = random.choice(chores)
chores.remove(randomChore)
print(maidName.rjust(6),'should',randomChore.ljust(8))
body = 'Subject:New task.\nDear %s,today you should %s.' \
'Thanks.'%(maidName,randomChore)
smtpObj.sendmail(fromMail,maidMail,body)
smtpObj.quit()
进阶版本
import smtplib,random
# 列表
chores = ['dishes','bathroom','vacuum','walk dog']
maidDict = {
'Rabbit':{'mail':'Rabbit@qq.com',
'last chore':''},
'Dog':{'mail':'Dog@qq.com',
'last chore':''},
'Cat':{'mail':'Cat@qq.com',
'last chore':''},
}
# 邮箱设置
fromMail = ''
secretCode = ''
smtpObj = smtplib.SMTP('smtp.qq.com',587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(fromMail,secretCode)
# 分配任务
choreCut = chores[:]# 第一次
for maidName,maidInformation in maidDict.items():
randomChore = random.choice(choreCut)
while(randomChore == maidInformation['last chore']):
randomChore = random.choice(choreCut)
choreCut.remove(randomChore)
maidInformation['last chore'] = randomChore
print('first:',maidName.rjust(6),'should',randomChore.ljust(8))
body = 'Subject:New task.\nDear %s,today you should %s.' \
'Thanks.'%(maidName,randomChore)
smtpObj.sendmail(fromMail,maidInformation['mail'],body)
smtpObj.quit()
终极版本
import smtplib,random,datetime,time
# 列表
chores = ['dishes','bathroom','vacuum','walk dog']
maidDict = {
'Rabbit':{'mail':'Rabbit@example.com',
'last chore':''},
'Dog':{'mail':'Dog@example.com',
'last chore':''},
'Cat':{'mail':'Cat@example.com',
'last chore':''},
}
oneWeek = datetime.timedelta(seconds=7)
rounds = 0 # 轮回次数
# 邮箱设置
fromMail = ''
secretCode = ''
smtpObj = smtplib.SMTP('smtp.qq.com',587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(fromMail,secretCode)
# 分配任务
while True:
rounds += 1
choreCut = chores[:]# 第一次
for maidName,maidInformation in maidDict.items():
randomChore = random.choice(choreCut)
while(randomChore == maidInformation['last chore']):
randomChore = random.choice(choreCut)
choreCut.remove(randomChore)
maidInformation['last chore'] = randomChore
print(str(rounds),":",maidName.rjust(6),'should',randomChore.ljust(8))
body = 'Subject:New task.\nDear %s,today you should %s.' \
'Thanks.'%(maidName,randomChore)
smtpObj.sendmail(fromMail,maidInformation['mail'],body)
print(str(oneWeek),'后再次启动!')
time.sleep(oneWeek.seconds)
smtpObj.quit()