「学习笔记」3.16代码学习

来源:互联网 发布:虚拟光驱软件下载 编辑:程序博客网 时间:2024/05/01 22:13

今天在刷题的时候总是会出现’int’ object is not iterable,还有就是不会生成数列,虽然明白是怎么意思,就是写不出来,这一部分都是和迭代有关,所以还是得看看教程。
继续刷题。弄了一天,到现在已经是头晕了,而且这一天的效率也很低,这个速度我这400道题啥时候能刷完啊,不过刷题不是目的,每个弄懂才是目的,对,我就是这样安慰自己的。还有就是这几天刷题并不是严格按照题要求输入和输出,我给自己找的借口是现在刚开始,先以能够实现功能为主,因为我发现,在我纠结输入和输出格式的时候是最浪费时间的,也是我对这方面不熟。
这些题在写出来再回过头来看,好像都不难哈,但是在写的过程中真的什么问题都会碰到,搞个循环总是循环不彻底,总是直接在循环里输出,今天和昨天都遇到这样的问题,而且每次都出错,我也是对自己的智商醉了。所以说,这光看别人写的代码真的没用,看完自己写又是另一回事,让你不看别人的自己写,啥问题都出来,看我每次写的代码都一堆做验证的,比如说看看打印出的是数还是列表,循环走没走完,诸如此类,没办法,要不有的时候真的找不到错误在哪里,为什么错。
今天的积极性已经被打消的差不多了,我多么希望自己坚持下去,一个月也让我见点成效吧。
——写在学习代码的第五天。

acmcoder
http://acm.acmcoder.com/listChineseproblem.php

2007平方和与立方和
关于这道题我对题目的输入和输出有些疑问,不过我也就是按照自已理解的写的,明天再回头看看吧

#encoding:utf8#2007平方和与立方和#原习题的题目我不太能理解,测试例子中输入和输出的结果def odd(x):    return x%2!=0def even(x):    return x%2==0def func(L):    l_odd=filter(odd,L)    #print l_odd    l_even=filter(even,L)    #print l_even    sum_squ=0    for i in l_even:        sum_squ=sum_squ+i**2    sum_cub=0    for i in l_odd:        sum_cub=sum_cub+i**3    return sum_squ,sum_cubprint func([1,3,2,5])print func([1,3,5,7])print func([2,4,6,8])

2008数值统计

#encoding:utf8#2008数值统计#思考:如果从列表中筛选出大于0的计数,或是形成新列表统计其长度?#1def num_statistic(L):    positive=0    #之前犯了个错误,想要positive,negtive,zero=0统一定义,结果一直报错,这种还是不能列为一式定义    negtive=0    zero=0    for i in L[1:]:        if i>0:            positive=positive+1        elif i==0:            zero=zero+1        else:            negtive=negtive+1    return negtive,zero,positiveprint num_statistic([5,-1,2,3,-2,4])print num_statistic([5,-1,-2,-3,-4,-5])print num_statistic([4,1,2,3,4,])print num_statistic([4,1,2,3,0])print num_statistic([4,-1,-2,-3,0]

2009求数列的和

#encoding:utf8#2009求数列的和#这道题想了半天怎么构造数列,唉,水平太不行啊,之前学的教程里明明就有教。还是不能做到灵活运用。import math##1用生成器生成数列# def sqrt_iter(n,m):#     ai=n#     while m>0:          #生成器这还是用不太好#         yield ai#         ai=math.sqrt(ai)#         m=m-1## def seq_sum(n,m):#     seq=list(sqrt_iter(n,m))#     sum=0#     for i in seq:#         sum=sum+i#     return round(sum,2)##2用递归生成数列def sqrt_iter(n,m):    ai=n    l=[n]    for i in range(1,m):        ai=math.sqrt(ai)        l.append(ai)    return lprint sqrt_iter(81,4)def seq_sum(n,m):    return round(sum(sqrt_iter(n,m)),2)print seq_sum(81,4)print seq_sum(2,2)

2010水仙花数

encoding:utf8#2010水仙花数##1#穷举法实现判断一个数是否是水仙花数def flower(x):    if x>=100 and x<=999:        a=x/100        #print a        b=x/10%10        #print b        c=x%100%10        #print c        if x==a**3+b**3+c**3:            return True        return Falsedef flower_num(n,m):    l=list()    for i in range(n,m+1):        if flower(i):            l.append(i)    return lprint flower_num(100,120)print flower_num(300,380)print flower_num(90,99)#2不限制一定是三位数 参考def flower(num):    s=str(num)    if reduce(lambda sum,x:sum+int(x)**3,s,0)==num: #高手写法        return True    return Falsedef flower_num(n,m):    l=filter(flower,range(n,m+1))    if len(l)==0:        print 'no'    else:        for i in l:            print i,        printflower_num(100,120)flower_num(300,380)flower_num(90,99)

2011多项式求和

#encoding:utf8#2011多项式求和##这遍题目我都是没有按照题目要求的格式输入和输出,毕竟才开始学习,先能实现功能,再去规范输入输出def pol(x):    l=[]    a=1    for i in range(1,x+1):        a=(-1.0)**(i+1)/i        l.append(a)    return l#print pol(4)def sum_pol(x):    return round(sum(pol(x)),2)print sum_pol(2)print sum_pol(1)
0 0