#%%
#1.1
#显示内建函数
dir(__builtins__)
#查看具体明细
help(abs)
#显示某一package明细
import math
dir(math) #显示下级函数
help(math) #帮助信息
#%%
#1.2
#顺序,选择,结构
#guess number(0~300)
from random import randint
x=randint(0,300)
print 'Please input a number between 0~300'
digit=input()
if digit==x:
print 'Bingo!'
elif digit>x:
print 'Too large, please try again'
else:
print 'Too small, please try again'
#%%
print range(3,11,2)
print range(3,11)
print range(11)
#xrange产生生成器
print xrange(3,11,2)
a=xrange(3,11,2)
for i in a:
print i
#%%
#1.2.3 Loops
sumA=0
j=1
while j<10:
sumA+=j
print j,sumA
j+=1
print sumA
s='python'
for c in s:
print c
for i in range(3,11,2):
print i
#%%
#列表解析->函数式编程
[i+1 for i in range(10) if i%3==0]
#%%
#1.2.4 break,continue,else
sumA=0
i=0
while True:
sumA+=1
i+=1
if sumA>10:
break
print 'i=%d,sum=%d'%(i,sumA)
#%%
#2-100之间素数
from math import sqrt
j=2
while j<=100:
i=2
k=sqrt(j)
while i<=k:
if j%i==0:break
i=i+1
if i>k:
print j
j+=1
for i in range(2,101):
flag=1
k=int(sqrt(i))
for j in range(2,k+1):
if i%j==0:
flag=0
break
if flag:
print i
#%%
#else+while/for->如果正常结束,执行;break结束,不执行else
k=5
for i in range(1,10):
if k==3:
break
else:
print i
#%%
#1.2.5自定义函数
def addMe2Me(x):
#文档字符串,用.__doc__显示
'apply operation+ to argument'
return(x+x)
#创建1-100之间素数函数
from math import sqrt
def isprime(x):
'check whehter number is prime'
if x==1:
return False
k=int(sqrt(x))
for j in range(2,k+1):
if x%j==0:
return False
return True
#调用isprime函数
for i in range(2,101):
if isprime(i):
print i,
#默认参数,关键字参数
def f(x,y=True):
'Whether xand y both correct words or not'
if y:
print x,' are y both correct'
print x,'OK'
#调用f
f(8,True)
f(9,False)
f(y=False,x=68)
#传递函数
def self(f,y):
print f(y)
#调用函数
self(addMe2Me,2.2)
#匿名函数
r=lambda x:x+x
r(5)
my_add=lambda x,y:x+y
my_add(3,5)
#%%
#1.2.6递归
def fib_loop(n):
'Loop for Fibo'
a,b=0,1
count=1
while count<n:
a,b=b,a+b
count=count+1
print a
def fib_recur(n):
if n==0 or n==1:
return n
else:
return (fib_recur(n-1)+fib_recur(n-2))
fib_loop(10);print fib_recur(10)
def hanoi(a,b,c,n):
'a,b,c表示3个柱子,n表示盘子数量'
if n==1:
print a,'->',c
else:
hanoi(a,c,b,n-1)
print a,'->',c
hanoi(b,a,c,n-1)
hanoi('A','B','C',3)
#%%
#1.2.7变量作用域
def f(x):
global a
print a
a=5
print a+x
a=3
f(8)
print a
#%%
#1.2练习
def level_score(x):
'''define the leve of grade x'''
x=int(x)
if x in range(90,101):
return 'A'
elif x in range(70,90):
return 'B'
elif x in range(60,70):
return 'C'
elif x in range(0,59):
return 'D'
else:
return 'Invalid Score'
print map(level_score,[95,89,60,35,130])
import math
def fun(num):
if num<0:
print '-',
num=-num
#数字分拆成字符
if num/10:
fun(num/10)
print chr(num%10+48),
fun(-1234)
def proc(n):
if n<0:
print '-',
n=-n
if n/10:
proc(n/10)
print n%10,
proc(-345)
#%%
from math import sqrt,pow
def is_prime(x):
'''check x in prime'''
if x==1:
return False
k=int(sqrt(x))
for i in range(2,k+1):
if x%i==0:
return False
return True
def mersenne(num):
'''M=2P-1,M and P both are prime number'''
if is_prime(num):
return True
'''>50 will overflow memory'''
for n in range(2,50):
p=n
if is_prime(p):
m=pow(2,n)-1
if mersenne(m):
print n,int(m)