now=d.date.today()
t=True
d1=1
while t:
if len(set(str(now-d.timedelta(days=d1))))==9:
print(str(now-d.timedelta(days=d1)))
t=False
else:
d1+=1
#1987-06-25 #!/usr/bin/python
# -*- UTF-8 -*-
import datetime
import time
def is_valid_date(str_date):
try:
if time.strptime(str_date, "%Y%m%d"):
return True
except:
return False
date_now = datetime.datetime.now().strftime("%Y%m%d")
for i in reversed(range(int(date_now))):
if len(set(str(i))) == 8:
if is_valid_date(str(i)):
print(i)
break
else:
print("not find")
def chercher():
ajrd = datetime.date.today()
brithday = str(ajrd.year) + str(ajrd.month) + str(ajrd.day)
jour = ajrd.day
mois = ajrd.month
an = ajrd.year
jours =
while len(set(brithday)) != len(brithday):
jour -= 1
if jour == 0:
if mois != 0:
mois -= 1
jour = jours
else:
mois = 12
jour = 31
an -= 1
if an % 400 == 0 or (an % 4 == 0 and an % 100 != 0):
jours = 29
else:
jours = 28
brithday = '{}{:0>2}{:0>2}'.format(an, mois, jour)
return brithday {:10_257:}没看懂题目呀 bush牛 发表于 2017-12-8 12:23
这样写的效率比上面要高,上面运行2s左右,下面0.35s左右。
但是当t=23171207的时候(下一次出现这样的 ...
好聪明呀,长见识了。根据题目,日期确实只能是这个形式了。会用计算机以后,大脑已经越来越懒了 def strcompare(s):
for i in range(0,7):
for j in range(i+1,8):
if s == s:
return "not match"
from datetime import datetime, timedelta
now = datetime.strptime('1972-04-30','%Y-%m-%d')
for i in range(1,30000):
now = now + timedelta(days=1)
str1 = str(now).replace('-','').strip()
if strcompare(str1) != "not match":
lastdate = now
print lastdate 楼主不提供答案,题目答题结束以后,可不可以提供思路???其实不太懂题目。。原谅我很蠢{:10_266:}{:10_269:}
1987-06-25。。那1987-06-24为什么不是的??? Frank__3 发表于 2017-12-13 16:59
楼主不提供答案,题目答题结束以后,可不可以提供思路???其实不太懂题目。。原谅我很蠢{:10_2 ...
因为“从这个日期以后就再也没有出现这样的日期”这个条件。
1987-06-25如果成立的话,1987-06-24就是1987-06-25之前的一天,与这个条件矛盾了,所以1987-06-24不成立。 for x in range(1000, 2018):
for y in range(0, 13):
for z in range(0, 32):
a = x // 1000
b = x // 100 %10
c = x //10 %10
d = x % 10
e = y // 10
f = y % 10
g = z // 10
h = z % 10
tu = {a, b, c, d, e, f, g, h}
#print(tu)
if len(tu) == 8:
ls = []
r = str(a) +str(b) +str(c) +str(d) +str(e) +str(f) +str(g) +str(h)
ls.append(r)
print(ls[-1])
虽然答案是对的,但是迷之不严谨怎么办 birthday=[]
i=2018
years=
months=
days=
months_days={1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
Find=None
while Find!=True:
birthday=[]
i=i-1
years=i//1000
years=i%1000//100
years=i%1000%100//10
years=i%1000%100%10
birthday.extend(years)
for j in list(months_days.keys()):
months=j//10
months=j%10
birthday.extend(months)
for d in range(1,months_days+1):
days=d//10
days=d%10
birthday.extend(days)
if len(set(birthday))==len(birthday):
print(birthday)
Find=True
birthday.pop()
birthday.pop()
birthday.pop()
birthday.pop()
好久没见到每日一题了,坚持哦,这种为什么不采用众包形式,大家一起来 jerryxjr1220 发表于 2017-12-13 17:21
因为“从这个日期以后就再也没有出现这样的日期”这个条件。
1987-06-25如果成立的话,1987-06-24就是19 ...
老哥3456年12月7日不可以吗…… 本帖最后由 panheng 于 2019-8-18 11:09 编辑
如果你有一个问题并使用正则表达式,现在你有两个问题了。
写日期正则表达式用了99%时间,还没考虑闰年的情况,不过2月29日正好也不符合题意{:10_266:}
import re
end = 20171207
start = 19000101 #设置起始日期
list1 = []
p = re.compile(r'\b\d\d\d((0(0|\d|3]))|(0(0|\d|30]))|(02(0|\d))|(1(0|\d|3]))|(11(0|\d|30])))\b')
for date in range(start, end+1):
if p.match(str(date)):
temp = {each for each in str(date)}
if len(temp) == 8:
list1.append(date)
if len(list1) != 0:
print(list1[-1])
else:
print("没有符合条件的日期")
19870625 又试了个简单的,通过datetime模块生成目标格式日期,若符合条件输出,否则向前推一天直至匹配。
import datetime
enddate = datetime.date(2017,12,7)
while True:
date = str(enddate).replace('-','')
if len(set(date)) == 8:
print(date)
break
else:
enddate -= datetime.timedelta(1) {:10_266:}
页:
1
[2]