天天看點

學習->用Python玩轉資料->Week1/5

#%%
#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)    
           

版權聲明:本文為CSDN部落客「weixin_34004576」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34004576/article/details/91973598