通过电子邮件指派一个秘密圣诞老人

santa的Python项目详细描述


一个python项目,根据一组约束条件,将秘密圣诞礼物和收件人随机配对,然后发送电子邮件 他们,都没有接线员看到作业。

要求

  • 雅戈尔邮件

安装

使用pip3 install santapython3 -m pip install santa安装。在任一命令前面加上sudo如果 由于权限不足而失败。

用法

  1. 为所有参与者创建个人对象及其姓名和地址:
importsantajohn=santa.Person('John Doe','jdoe@example.com')sally=santa.Person('Sally Salamander','sally@mander.com')linus=santa.Person('Linus Torvalds','torvalds@transmeta.com')guido=santa.Person('Guido van Rossum','guido@python.org')
  1. 将它们放入列表:
people=[john,sally,linus,guido]
  1. 如果参与者对他们能给谁施舍有限制(比如说,约翰和莎莉已经结婚了,并且将要得到 不考虑对方的礼物),创建一个字典,以送礼者为键,列表中被禁止的接收者为 数值:
# not only are John and Sally married, but Sally hates Linus and will not get him a gift.restrictions={john:[sally],sally:[john,linus]}
  1. 将它们传递到函数santa.run(person_list, invalid_links=None, *, message='',subject='Secret Santa')。 这将匹配人并发送电子邮件。如果找不到匹配项,程序将引发santa.SolvingError。如果 您还没有configured yagmail,它将提示您输入用户名和密码。
santa.run(people,restrictions,message='Thank you for participating.')
  1. 如果发送电子邮件有任何错误,它们将以元组列表的形式打印到控制台 (gifter, recipient)。你,接线员,必须决定如何处理这个问题。

选项

默认情况下,圣诞老人将使用'loop'策略解决问题,这将产生一个“礼物循环”。 圣诞老人也可以用方法'draw'来解决这个问题,该方法模拟从帽子中提取门票。这种方法不会 必然会导致一个循环,但可能会发生两个礼物给对方的“对”。

要设置解决模式,请将其传递到santa.run(),如下所示:

santa.run(people,restrictions,solve_mode='loop')

当前的解决模式列表如下:

  • 'loop'(默认值)
  • 'draw'

圣诞老人也有输出模式的选择。默认情况下,它将向收件人发送电子邮件。但从0.2版开始,它也有 选项将输出保存到当前工作目录中的文本文件。这些可以附加到电子邮件并发送 不需要操作员知道谁被分配给谁。

要设置输出模式,请将其传入santa.run(),如下所示:

santa.run(people,restrictions,out_mode='text')

当前输出模式列表如下:

  • 'email'(默认值)
  • 'text'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是否在servlet中检索上一页路径?   Java抱怨在开关的默认情况下未初始化最终字段   Java泛型:为什么编译器不能判断这个类<t>对象与这个类的类型参数的对象的类具有相同的类型?   Java:继承方法中使用的私有变量   HibernateJava。ClassCastException:java。lang.Integer不能强制转换为abc。def。我的项目。奥姆。EmployeeTopMetaData   http java发布和下载文件   java改进条件检查   java如何将2d数组的条目作为键放在地图中   java如何获取传递给运行时的值。getRuntime。JUnit测试用例中的exit(value)   java注释来创建所有可能的构造函数   自动建议列表:java。lang.IllegalArgumentException:在XPath表达式为null时找不到元素   为什么MapAPI在Java中不提供流功能?   gradle不导入本地java库   尽管我使用的是SessionCreationPolicy,java Spring安全性似乎仍在使用会话。无国籍   使用java查找MongoDB中数组元素的平均值