python 100

fibo

def fi1(x):
if x==1 or x==2:
return 1
return fi1(x-1)+fi1(x-2)
print fi1(15)

def fi2(x):
a,b=1,1
for x in range(x-1):
a,b=b,a+b
return a
print fi2(15)

def fi3(x,y):
if x==1:
return [1]
if x==2:
return [1,1]
fibs=[1,1]
for x in range(x-1):
fibs.append(fibs[-1]+fibs[-2])
return fibs[y-1]
print fi3(15,15)

水仙花数

for x in range(100,999):
num=0
for y in str(x):
num+=int(y)**3
if num==x:
re.append(num)
1 .把数字转为字符串遍历然后进行操作
2 .可以把很多数学问题转换为非数学问题来取巧解决

分解质因数

def reduceNum1(n):
while True:
确保每一次都是从最小的开始找起
for index in xrange(2, n + 1):
if n % index == 0:
完成的条件
n /= index
n新的值
if n == 1:
# pass
print index
else :
# pass
print '{} *'.format(index),
print '--->'
break

把数字转化为字符串操作

a=4
n=4
re=0
for x in range(1,n+1):
n1=str(a)*x
print int(n1)
re+=int(n1)
print re

小球从100米的高空开始下落,每次反弹高度降低一半,10次反弹之后他的总路程和小球最后的反弹高度

tour=[]
height=[]
h=100.000
t=10
for x in range(1,t+1):
if x ==1:
tour.append(h)
else:
tour.append(h*2)
h/=2
height.append(h)
print height
1 .这次发现参数的精度也很有问题啊,如果精度不是很大的话,那么小的数据就会被抛弃掉

计算猴子吃的桃子

x=1
for z in range(1,10):
//遍历出来的z在使用的时候一定要和x做区分啊
print z
x=(x+1)*2
print x

打印如下图案






1 .要学会对需求进行拆分,不是所有的操作都必须一个函数完成,也不是必须所有的循环都必须是一个for搞定
from sys import stdout
for i in range(4):
for j in range(3 - i):
stdout.write(' ')
for k in range(2 * i + 1):
stdout.write('*')
print

for i in range(3):
for j in range(i + 1):
stdout.write(' ')
for k in range(4 - 2 * i + 1):
stdout.write('*')
print

2 .传入一个数,但是输出的两个变量都是和这一个数有关的,所以两个数分别和这个传进来的数找对应关系

交换且前后数据有联系

1 . b,a=a,a+b:这个是正确的,是理想的结果,还有一种处理方式就是使用一个中间变量来过渡一下a或b的值,当一个中间凉
2 .a=b
3 .b=a+b:此时b=2b

求1-20之间所有数的阶乘

s=0
for x in range(1,21):
s1=1
while x>0:
s1=s1*x
x=x-1
s+=s1
print s

反序输出一串字符串

1 .数组从前面插入
s='libateer'
x=[]
for z in s:
x.insert(0,z)
print x

给出一个五位数,求出他是几位数,然后逆序输出他的每个位上的值

1 .问题来了:将数字变为字符串处理的坏处有哪些?精度
n=3472
s=str(n)
for x in range(1,len(s)+1):
print s[-x]

判断一个数是否是回文数

1 .字符串的反序输出 s[::-1]
n='12321'
if n==n[::-1]:
print 'ok'

直接求数组的反序

a = ['one', 'two', 'three']
for i in a[::-1]:
print i

一个简单的数据存储

class names:
name='libatere'
age=20
//标记数据
//读取数据
print names.name

一个已经排好的数组,插入一个数字,按照原来的规律排好?二分法插入数据

1 .只分了一次就使用循环操作了。
2 .如果每一次都使用二分法的话,递归会不会内存溢出啊
s=[1,9,4,6,13,16,19,28,40,100,0,3]
s.sort()
import math
def newNum(x):
if x>s[-1]:
s.append(x)
else:
y=s[-1]-x
b=len(s)/2
z=min(y,b)
print z
if x<s[z]:
print 'qian'
for i in range(1,z):
if x>s[i] and x<s[i+1]:
s.insert(i+1,x)
break
else:
print 'hou'
for i in range(z,len(s)):
if x>s[i] and x<s[i+1]:
s.insert(i,x)
break

print s

newNum(17)

类的存储数据的功能

class Count:
count=10
def add(self):
self.count+=1
print self.count
a=Count()
for x in range(100):
a.add()

生成杨辉三角

s=[]

for x in range(10):
s.append([])
for j in range(10):
s[x].append(0)
//有些数据在添加之前是需要占位数据的。

for i in range(10):
s[i][0]=1
s[i][i]=1

先添加第一个和最后一个数

然后下面在进行规律生成

for i in range(2,10):
for j in range(1,i):
s[i][j]=s[i-1][j-1]+s[i-1][j]
print s

把多余的占位符消除掉

for i in range(10):
print s[i][0:i+1]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容