我学习python是师姐先给我留的作业,然后我再去在网上找资源学习,感觉有目的的学习有利也有弊。作业是这样的:
嗯,这就是传说中的闰年判断的升级版:闰年数计算!!!留作业之前我一点都没学呢,真是没有一点点防备。于是在有限的时间里,我学习了python输入输出赋值计算判断循环。可是!没来得及学函数(我好方.),于是别人写了几行就能写完的作业,我写了两个屏 T-T 。下面贴一下我码的~~(缩进格不见了,自己一个个打 T-T)
# _*_ coding _*_
print(‘第一个日期必须比第二个早‘)
y1 = input(‘第一个年份‘)
m1 = input(‘第一个月份‘)
d1 = input(‘第一个日子‘)
y2 = input(‘第二个年份‘)
m2 = input(‘第二个月份‘)
d2 = input(‘第二个日子‘)
y1=int(y1)
y2=int(y2)
m1=int(m1)
m2=int(m2)
d1=int(d1)
d2=int(d2)
if m1<2 and m2<2:
c=y2-y1
n=0
while c>0:
y2=y2-4
n=n+1
c=y2-y1
print(‘这两个日期之间有‘,n,‘个2月29日‘)
elif m1>2 and m2>2:
c=y2-y1
n=0
while c>0:
y2=y2-4
n=n+1
c=y2-y1
print(‘这两个日期之间有‘,n,‘个2月29日‘)
elif m1<2 and m2>2:
c=y2-y1
n=1
while c>0:
y2=y2-4
n=n+1
c=y2-y1
print(‘这两个日期之间有‘,n,‘个2月29日‘)
elif m1>2 and m2<2:
c=y2-y1
n=-1
while c>0:
y2=y2-4
n=n+1
c=y2-y1
print(‘这两个日期之间有‘,n,‘个2月29日‘)
else:
for ds in d:
if m1==2 and m2==2 and ds<=28:
c=y2-y1
n=0
while c>0:
y2=y2-4
n=n+1
c=y2-y1
print(‘这两个日期之间有‘,n,‘个2月29日‘)
elif m1==2 and m2==2 and d1==29:
c=y2-y1
n=1
while c>0:
y2=y2-4
n=n+1
c=y2-y1
print(‘这两个日期之间有‘,n,‘个2月29日‘)
elif m1==2 and m2==2 and d2==29:
c=y2-y1
n=1
while c>0:
y2=y2-4
n=n+1
c=y2-y1
print(‘这两个日期之间有‘,n,‘个2月29日‘)
exit
这个程序我就能数出来4处不足,但是我还是把它贴出来了,毕竟是我的第1个孩子(摔)。
嗯,这个作业是不完整的,甚至可以说是错误的,但是它还是给我了一些收获的。(尽管在稍微有点编程技术的人眼中看,这全都是常识,但作为一个初学者,我还是欣喜的迎接这种收获的。)
第一,我在用了 for x in a 后,发现每次都是输出了两个语句,而且有一个是错的。经过大神指点后才明白,for 是把清单里每一个元素都拿出来单列一遍,并不是一起拿出来(这里并没有原错误代码,所以有点难以理解,没法儿)。
第二,当我用 if a = 2 :bulabula什么的时候,这个等号一直在报错!同一个大神指点后,一个等号是赋值,两个等号是判断。
第三,当我想完成一个if就退出程序,大神听了我的意思后,表示只需要镶嵌if就行了,没有必要那么麻烦。
第四,我写这个程序的时候意识到一个问题,最基础的东西可以解决大部分问题,因为更高级的东西都是由基础的东西推出来的。但是,高级的东西可以提高工作效率,节省大量时间。
第五,我最开始输入年份用于计算的时候,它总是 45+97=4597,而不是 45+97=142,又是经过大神指点才发现数据类型错了,需要经过int的转换。
另:非编程的感悟,完美主义永远都不是拖延症的理由。
(我是绝不会告诉你们那个大神是谁的。\抠鼻)
原文:http://www.cnblogs.com/gebulindashi/p/4908745.html