[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创代码] python解无忧公主数学题108回文.py

  1. """
  2. python解无忧公主数学题108回文.py
  3. 题目来源: http://mp.weixin.qq.com/s?__biz=MzI5ODEwMDQyNw==&mid=402360973&idx=1&sn=31014f87b8e65c9cd1d40c625c9c3d90&3rd=MzA3MDU4NTYzMw==&scene=6#rd
  4. 2016年3月7日 14:59:17 codegay
  5. """
  6. #利用到了集合的特性,进行集合交集运算
  7. #2016年3月8日 05:59:41
  8. def 方法1():
  9.     f=lambda x,y: x if str(x*y)==str(x*y)[::-1] else None
  10.     x91={f(r,91) for r in range(1,100) if f(r,91)}
  11.     x93={f(r,93) for r in range(1,100) if f(r,93)}
  12.     x95={f(r,95) for r in range(1,100) if f(r,95)}
  13.     x97={f(r,97) for r in range(1,100) if f(r,97)}
  14.     print("方法1结果:",x91&x93&x95&x97)
  15.     return (x91&x93&x95&x97)
  16. 方法1()
  17. #2016年3月8日 06:23:32
  18. def ff2():
  19.    
  20.     def f(x,y):
  21.         if str(x*y)==str(x*y)[::-1]:
  22.             return x
  23.         
  24.     results=[r for r in range(1,100) if f(r,91) and f(r,93) and f(r,95) and f(r,97)]
  25.     print("方法2结果:",results)
  26.     #2016年3月8日 06:40:33
  27.     return results
  28. ff2()
  29.         
复制代码
1

评分人数

    • CrLf: 感谢分享技术 + 3
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

  1. #2016年3月8日 06:59:08
  2. #用正则匹配写一个
  3. import re
  4. def ff3():
  5.     def f(x,y):
  6.         if re.match(r"""^(\d?)(\d?)(\d?)(\d?)\4\3\2\1$""",str(x*y)):
  7.             return True
  8.     x91=[r for r in range(1,100) if f(r,91)]
  9.     results=[r for r in x91 if f(r,93) and f(r,95) and f(r,97)]
  10.     print("方法3结果:",results)
  11.     #2016年3月8日 07:29:33
  12. ff3()
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

想了想,可以完全可以省掉if语句。
  1. """
  2. python解无忧公主数学题108回文.py
  3. 题目来源: http://mp.weixin.qq.com/s?__biz=MzI5ODEwMDQyNw==&mid=402360973&idx=1&sn=31014f87b8e65c9cd1d40c625c9c3d90&3rd=MzA3MDU4NTYzMw==&scene=6#rd
  4. 2016年3月7日 14:59:17 codegay
  5. """
  6. #利用到了集合的特性,进行集合交集运算
  7. #2016年3月8日 05:59:41
  8. def 方法1():
  9.     f=lambda x,y: str(x*y)==str(x*y)[::-1]
  10.     x91={r for r in range(1,100) if f(r,91)}
  11.     x93={r for r in range(1,100) if f(r,93)}
  12.     x95={r for r in range(1,100) if f(r,95)}
  13.     x97={r for r in range(1,100) if f(r,97)}
  14.     print("方法1结果:",x91&x93&x95&x97)
  15.     return (x91&x93&x95&x97)
  16. 方法1()
  17. #2016年3月8日 06:23:32
  18. def ff2():
  19.    
  20.     def f(x,y):
  21.         return str(x*y)==str(x*y)[::-1]
  22.         
  23.     results=[r for r in range(1,100) if f(r,91) and f(r,93) and f(r,95) and f(r,97)]
  24.     print("方法2结果:",results)
  25.     #2016年3月8日 06:40:33
  26.     return results
  27. ff2()
  28.         
  29. #2016年3月8日 06:59:08
  30. #用正则匹配写一个
  31. import re
  32. def ff3():
  33.     def f(x,y):
  34.         return re.match(r"""^(\d?)(\d?)(\d?)(\d?)\4\3\2\1$""",str(x*y))
  35.     x91=[r for r in range(1,100) if f(r,91)]
  36.     results=[r for r in x91 if f(r,93) and f(r,95) and f(r,97)]
  37.     print("方法3结果:",results)
  38.     #2016年3月8日 07:29:33
  39. ff3()
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

  1. #2016年3月8日 08:39:02
  2. #再尝试改进一下写法
  3. def ff4():
  4.     l=[91,93,95,97]
  5.     f=lambda x,iters: False not in [str(x*r)==str(x*r)[::-1] for r in iters]
  6.     results=[r for r in range(1,100) if f(r,l)]
  7.     print("方法4结果:",results)
  8.     #2016年3月8日 09:17:07
  9. ff4()
  10.    
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

返回列表