python怎么编写对称图案,用Python编写的列举所有对称日的小程序--菜鸟写的,请多指教...

世界完全对称日是指公历纪年日期中数字左右完全对称的日期。如2010年1月2日(20100102),2011年11月2日(20111102)等。

那么根据月份和日期推导出完全对称日的年份就是一种方法。比如01月01日对应的对称日是1010年01月01日,12月31日对应的对称日是1321年12月31日,一年365天就有365个对称日,再加上闰年的02月29日对应的9220年02月29日,一共就有366个对称日。

所以我的想法是先将一年365天的月份日期打印出来,再分别对月和日的数字进行处理,就得到年份。比如今天11月02日,那么年份的前两位就是02%10*10+02/10=20,这里,2%10=2,02/10=0,所以2*10+0=20,年份的后两位的算法可以如法炮制。推广为一般的公式就是,比如设为i月j日,年份高两位x=j%10*10+j/10,年份低两位是y=i%10*10+i/10,那么打印出来就是xy年i月j日。最后,只需将i从1循环到12,j从1到31,另外还要考虑大小月和2月的情况,就能将366个完全对称日输出。

Python是一门非常强大的语言,利用它内置的数据结构,可以方便对数据进行处理。比如本程序中,将对称日化为一串数字,例如今天就是20111102,将366个对称日放入列表list中,list.sort()可以方便地对列表中的元素进行从小到大的排序,最后逐个输出列表中的元素即可。

在下是初学python的菜鸟,请大虾们不吝赐教,如果有错请指正,有更好的方法一定要分享哦~

a4172ef5758045dbd713b79b256f6b4d.gif

1.[代码][Python]代码

list=[]

for i in range(1,13):

for j in range(1,32):

if i==2 and j>28:

break

elif j>30 and (i==4 or i==6 or i==9 or i==11) :

break

else:

x=j%10*10+j/10

y=i%10*10+i/10

num=x*1000000+y*10000+i*100+j

list.append(num)

list.append(92200229)

list.sort()

for k in range(0,len(list)):

year=list[k]/10000

month=list[k]%10000/100

day=list[k]%100

print "%04d"%year,"%02d"%month,"%02d"%day

2.[图片] 结果.PNG

02193838_rnm5.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值