鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

[技术交流] Python:每日一题 132

[复制链接]
发表于 2018-1-7 07:59:36 From FishC Mobile | 显示全部楼层
or i in range(1000,2018):
    for j in range(1,13):
        for k in range(1,32):
            if i*j*k==319907:
                print(i,j,k)

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 00:36:34 | 显示全部楼层
for year in range(1900,2100):
    for month in range(1,13):
        for day in range(1,32):
            if year*month*day == 319907:
                print('年份是:%d,月份是:%d,日是:%d'%(year,month,day))
年份是:1987,月份是:7,日是:23

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 11:47:39 | 显示全部楼层

for a in range(1900,2000):
    for b in range(1,13):
        for c in range(1,32):
           if  a*b*c == 319907:
            print('您的生日是'+str(a)+'年'+str(b)+'月'+str(c)+'日')

您的生日是1987年7月23日

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 12:21:55 | 显示全部楼层
  1. mon = [x for x in range (13) if x!=0]
  2. day = [x for x in range (32) if x!=0]
  3. ji = 319907
  4. for m in mon:
  5.     if ji % m == 0:
  6.         for d in day :
  7.             if ji //m % d == 0:
  8.                 year = ji //m//d
  9.                 if len (str (year)) == 4:
  10.                     print (str(year)+'/'+str(m)+'/'+str(d))
复制代码


菜鸟想要鼓励!谢谢
捕获.PNG

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 18:10:16 | 显示全部楼层
#每日一题132
for years in range(1,3000):
        for months in range (1,13):
                for date in range (1,32):
                        sum = years * months * date
                        if sum == 319907:
                                print (years,months,date)

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 18:44:19 | 显示全部楼层
月份1到12
日期1到31
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 21:01:09 | 显示全部楼层
for year in range(1000,9999):
    for month in range(12):
        for day in range(31):
            if year*month*day == 319907:
                print year,month,day

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 22:00:01 | 显示全部楼层
for year in range(0,2019):
        for month in (1,13):
                for day in (1,32):
                        if year*month*day == 319907:
                                print(year,month,day)

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-9 00:00:37 | 显示全部楼层
for i in range(1900, 2017):
   for j in range (1, 13):
      for k in range (1, 31):
          if i*j*k == 319907:
              print (i,j,k)
answer is 1987 7 23

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-9 16:21:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-9 16:41:18 | 显示全部楼层
  1. for i in range(9999):
  2.     for j in range(13):
  3.         for r in range(32):
  4.             if (i*j*r) == 319907:
  5.                 print('他的出生%s年%s月%s日'%(i,j,r))
复制代码
  1. 他的出生1987年7月23日
复制代码

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-9 17:00:43 | 显示全部楼层

  1. #优化代码
  2. import datetime


  3. def getBirthday():
  4.     #获取当前时间的年份
  5.     year = datetime.datetime.now().year
  6.     for i in range(1000,year+1):
  7.         for j in range(13):
  8.             for r in range(32):
  9.                 if (i*j*r) == 319907:
  10.                     t_str = '%s年%s月%s日' % (i, j, r)
  11.                     return  t_str


  12. birthday = getBirthday()

  13. print("他的出生"+birthday)
复制代码



他的出生1987年7月23日

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-9 17:02:15 | 显示全部楼层
1987年7月23日
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-9 17:12:44 | 显示全部楼层
a = range(19000000,20200000)
for  i in a:
    i = str(i)
    if int(i[0:4]) * int(i[4:6]) * int(i[6:8]) == 319907:
        print("---------------------------------")
        print("       出生年份:" + i[0:4])
        print("       出生月份:" + i[4:6])
        print("       出生日期:" + i[6:8])
        print("---------------------------------")
        break

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1 如果出现月份大于12,日期大于31的情况怎么.

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-9 17:26:34 | 显示全部楼层
for year in range(1000,10000):
    for month in range(1,13):
        for day in range(1,32):
            if year*month*day == 319907:
                print("张三出生日期为%d年%d月%d日" % (year,month,day))

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-10 16:59:43 | 显示全部楼层

a=0
for day in range(1,32):
    for month in range(1,13):
        year = 319907/(day*month)
        if a == 319907%(day*month) and year<9999:
            print(int(year),'.',int(month),'.',int(day))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-10 17:00:46 | 显示全部楼层
for Y in range(2019):
    for M in range(1,13):
        for D in range(1,31):
            if Y*M*D==319907:
                print(Y,M,D)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-17 13:33:18 | 显示全部楼层
题目本身没有说年月日都是质数,因此两种方法都做了一下。
方法一:分解质因数(只适用于年月日都是质数的情况)
  1. day = 319907
  2. k = 2
  3. l1 = []
  4. while k <= day:
  5.         if k == day:
  6.                 l1.append(k)
  7.                 break
  8.         elif day % k == 0:
  9.                 l1.append(k)
  10.                 day = day/k
  11.         else:
  12.                 k += 1
  13. print(l1)
复制代码


结果:[7, 23, 1987]

方法二:输入任意年月日的乘积(1900年1月1日至今),输出可能的年月日组合
  1. import datetime


  2. day = 360000
  3. start = datetime.date(1900, 1, 1)
  4. today = datetime.date.today()

  5. date_list = []
  6. for y in range(start.year, today.year + 1):
  7.     if day % y == 0:
  8.         m_d = day / y
  9.         if (y % 100) != 0 or (y % 400) == 0:            # 判断是否是闰年
  10.             is_leap_year = True
  11.         else:
  12.             is_leap_year = False

  13.         for m in range(1, 13):
  14.             if m_d % m == 0 and m_d/m <= 31:
  15.                 if m in [2, 4, 6, 9, 11] and m_d/m > 30:            # 小月不大于30
  16.                     continue
  17.                 elif m == 2 and is_leap_year and m_d/m > 29:        # 闰年2月,大于29号的结果舍去
  18.                     continue
  19.                 elif m == 2 and not(is_leap_year) and m_d/m > 28:   # 平年2月,大于28号的结果舍去
  20.                     continue
  21.                 else:
  22.                     date_list.append([y, m, round(m_d/m)])

  23. for d in date_list:
  24.     print('-'.join([str(i) for i in d]))
复制代码


结果:
2000-6-30
2000-9-20
2000-10-18
2000-12-15
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-31 09:45:02 From FishC Mobile | 显示全部楼层
def showFac():
      n = int(input('请输入:'))
      print("%d="%n,end='')
      #判断n为偶数的情况
      while n%2==0:
          print("2*",end='')
          n/=2
      i=3
      while i<=n**0.5:
          i+=2
          if n%i==0:
              n/=i
              print("%d*"%i,end='')
              i-=2
      print(int(n))
showFac()
=============分割线==============
打印结果319907=7*23*1987
显然是1987年7月23日
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-31 10:01:33 From FishC Mobile | 显示全部楼层
graceasyi 发表于 2018-1-17 13:33
题目本身没有说年月日都是质数,因此两种方法都做了一下。
方法一:分解质因数(只适用于年月日都是质数的 ...

这个才是真大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 21:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表