「学习笔记」3.16代码学习

Posted stars_cj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「学习笔记」3.16代码学习相关的知识,希望对你有一定的参考价值。

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

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

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

#encoding:utf8
#2007平方和与立方和
#原习题的题目我不太能理解,测试例子中输入和输出的结果

def odd(x):
    return x%2!=0

def even(x):
    return x%2==0

def 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_cub


print func([1,3,2,5])
print func([1,3,5,7])
print func([2,4,6,8])

2008数值统计

#encoding:utf8
#2008数值统计
#思考:如果从列表中筛选出大于0的计数,或是形成新列表统计其长度?

#1
def 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,positive

print 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 l
print 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 False

def flower_num(n,m):
    l=list()
    for i in range(n,m+1):
        if flower(i):
            l.append(i)
    return l

print 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 False

def flower_num(n,m):
    l=filter(flower,range(n,m+1))
    if len(l)==0:
        print 'no'
    else:
        for i in l:
            print i,
        print

flower_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)

以上是关于「学习笔记」3.16代码学习的主要内容,如果未能解决你的问题,请参考以下文章

Unity Shader入门精要学习笔记 - 第10章 高级纹理

Python3 学习笔记生成数据

DirectX学习笔记--索引缓存绘图

OpenGL学习--05--纹理立方体--代码

3.16下午 王希伟网课+笔记

学习笔记---数学运算