「学习笔记」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代码学习的主要内容,如果未能解决你的问题,请参考以下文章