ITPub博客

首页 > 数据库 > 数据库开发技术 > 【每周一坑】特殊的生日

【每周一坑】特殊的生日

原创 数据库开发技术 作者:Crossin的编程教室 时间:2017-12-04 20:44:40 0 删除 编辑

好吧,我在跳票的道路上又双叒叕前进了一步……今天终于厚着脸皮来更新【每“周”一坑】啦。感谢在后台孜孜不倦催促我的同学们。

在出题前,先插两句:

  1. 上次关于 Python 学习方向的直播《Python 路线图》回放已上传,公众号回复 直播,或从网站的“学习资源”栏目最下方的“直播录像”中可下载。

  2. “Python 实战训练营”新一期即将于 12.12 正式开讲,目前开放报名中。了解课程详情可点击文末的 阅读原文 或在公众号里回复 训练营。




今天的题目是一道脑筋急转弯:

每个日期可以转成8位数字,比如 2017年12月4日 对应的就是 20171204。小明发现,自己的生日转成8位数字后,8个数字都没有重复,而且自他出生之后到今天,再也没有这样的日子了。请问小明的生日是哪天?

当然,如果你脑筋转得够快,很容易推出这个日期。但我们是程序员啊,我们都很懒的,这种事就交给电脑去算好啦。

期待各位同学提交解答。

提交代码可以使用 paste.ubuntu.com 或 codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。



【解答】注册表单验证

上期的问题,可以用字符串的相关函数来处理,但更好的方法是通过正则表达式。

有好几位同学给出了解答,其中 @elyt 的正则表达式最完备。在他的代码基础上做了一点小修改,供参考:

#coding:utf-8
import re pattern = re.compile(r'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$')
while True:    mail = raw_input('邮箱地址:')    match = pattern.match(mail)
   if match:        break    else:        print('邮箱地址格式不正确,请重新输入。') pattern = re.compile(r'(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{8,}$')
while True:    password = raw_input("密码:")    match = pattern.match(password)
   if match:        break    else:        print('密码需要8位以上,并包含有大写字母、小写字母和数字三种字符。请重新输入。') print('注册提交成功')

@王炎 和初二的 @方子正 同学分别用 PyQT 和 Tkinter 给出了图形界面版本,不过都还有点小 bug 值得改进。

@古美萌 和 @九二 增加了邮箱重复的验证。

完成代码的还有 @狮子不咬人 @.*+。

欢迎在论坛 bbs.crossincode.com 上对代码做进一步讨论。

感谢大家的积极参与!期待在下一期中看到你的代码!




  • 代码问题请在论坛 bbs.crossincode.com 上发帖提问

  • 欢迎加入讨论交流群组共同学习进步

  • 别忘了将我们的文章转发朋友圈或在知乎上为我们的专栏点赞,你们的支持将会让编程教室做得更好:)




推荐阅读:

Python老司机给上路新手的3点忠告

【数据说话】当下的Python就业前景如何

Python有嘻哈:Crossin教你用代码写出押韵的verse

听说你好不容易写了个爬虫,结果没抓几个就被封了?

编程新手:看懂很多示例,却依然写不好一个程序

给伸手党的福利:Python 新手引导

Python 爬虫爬取美剧网站

爆款游戏《贪吃蛇大作战》的 Python 实现



欢迎加入

Crossin的编程教室

crossincode.com

读者交流QQ群:657099683

微信请加 crossin123 留言入群(新手/进阶/爬虫)


  请把我们分享给身边爱学习的小伙伴 :)  


点击“阅读原文”,了解“Python 实战训练营”

原文作者:Crossin的编程教室;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2015-06-05

  • 博文量
    498
  • 访问量
    200496