美文网首页
2020-02-09python学习

2020-02-09python学习

作者: 锅炉工的自我修养 | 来源:发表于2020-02-09 21:12 被阅读0次

    python基本数据结构(八)

      1. 逐个打印元素
    weekdays=['Monday','Tuesday','Wednesday','Thursday','Friday']
    print(weekdays)
    i=0
    while i< len(weekdays):
        print(weekdays[i])
        i+=1
    # range method
    list(range(len(weekdays))) # 返回sequence,用于loop
    # [0, 1, 2, 3, 4] 抱歉不报后
    for day in weekdays:
        print(day) # 返回list中的每一个元素
    #type(enumerate(weekdays))
    for key,day in enumerate(weekdays):
        print(str(key)+" "+day) # enumerare return a tuple,including index and value
    my_list=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
    for c,value in enumerate(my_list,1): # 指定index的起始位置
        print(c,value)
    
    pizza={
        "size":"medium",
        "type":"pepperoni",
        "crust":"Thick",
        "qty":1,
        "deliver":True
          }
    for k,v in pizza.items(): # 调用函数 + (),items返回key&value pair
        print("key is {},value is {}".format(k,v))
    
    # range returns a sequence
    num_list=[i for i in range(0,10)] # list comprehensions
    num_list 
    
    num_list=list(range(1,10,2))
    num_list # return a odd list 
    
    num_list=[i for i in range(0,10) if i%2==1] 
    num_list # 添加filter的list comprehensions
    
    num_list=[]
    num_list=[i**2 for i in range(500) if i%3==2]
    #num_list
    #type(num_list)
    
    gen=(i*i for i in range(500) if i%3==2)
    gen
    type(gen) # data type generator
    
    # print generator number
    for num in gen:
        print(num) # print generator
    # random function
    import random
    num_list=random.sample(range(10),10) # pick k unique elements from population
    target=5
    print("list=",num_list)
    print("target=",target)
    
    l1=[x for x in num_list if x< target]
    l2=[x for x in num_list if x>=target]
    #list comprehensions default return a generator
    print("l1 is ",l1)
    print("l2 is {}".format(l2))
    
    l2=[x for x in num_list if x not in l1]
    print("l2:",l2) # not in syntax
    print("num_list:",num_list)
    
    rows=range(1,4)
    cols=range(1,3)
    
    cells=[]
    for row in rows:
        for col in cols:
            cells.append([row,col]) # appedn only takes exactly one argument
    cells # nested method 
    
    # Above loop can be writtern in the 
    cells=[[r,c] for r in rows for c in cols]
    cells # list comprehension method
    
    builder_list=[]
    string_build=""
    for data in container:
        builder_list.append(str(data))
    "".join(builder_list)
    
    # antother way is to use a list comprehension
    "".join([str(data) for data in container])
    
    # or use map function
    "".join(map(str,container))
    
    

    Python code structures

    possibility_to_rain=0.7
    if possibility_to_rain> 0.8:
        print("Do take your umberalla with you.")
    elif possibility_to_rain>0.3:
        print("Take your umberalla just in case. hhhaha")
    else:
        print("Enjoy the sunshine!")
    
    card_type="debit"
    account_type="checking"
    if card_type=="debit":
        if account_type=="checking":
            print("Checkings selected.")
        else:
            print("Saving selected.")
    else:
        print("Credit card.")
    
    x=int(input("Please enter an integer:\n"))
    if x < 0:
        x=0
        print("Negative changed to zero")
    elif x==0:
        print("Zero")
    elif x==1:
        print("Single")
    else:
        print("More")
    
    

    switch case

    class SMTP:
        def lookupMethod(self,command):
            return getattr(self,'do_'+ command.upper(),None)
        def do_HELO(self,rest):
            return 'Howdy '+rest
        def do_QUIT(self,rest):
            return 'Bye'
        
    SMTP().lookupMethod('HELO')('foo.bar.com') #=>'howdy foo.bar.com'
    SMTP().lookupMethod('QUIT')('') # =>'Bye'
    
    # while loop
    cnt=1
    while cnt<=5:
        print('cnt=%d' % cnt)
        cnt+=1
    print("finish")
    
    # 每次询问,用户决定何时退出
    cnt=1
    while True:
        print('cnt=%d' % cnt)
        ch=input('Do you want to continue? [y|n]:')
        if ch=='y':
            cnt+=1
        else:
            break
    
    # for loop
    # ?range——查询build-in function
    # for else ,如果遇到 break打印,没有遇到不打印。
    for i in range(10):
        print(i)
        if i==15:
            break
    else:
        print("no break")
    ---
    list(range(1,100)) # range(a,b),从a开始,到b-1结束生成数列
    
    # 猜数
    from random import randint
    mystery=randint(1,100)
    times=3
    print("I've thought a number from 1 to 100. You have %s times to guest it out" % times)
    
    def guess_number(times):
        for i in range(0,times):
            user_input=int(input("Please enter a number:\n>>>"))
            if user_input==mystery:
                print("Great, you are right, the number is %s." % mystery)
                break
            elif user_input>mystery:
                print("Your input is too big.")
                print("You have %s times left. Good luck!" %(times-i))
            else:
                print("Your input is too small.")
                print("You have %s times left. Good luck!" % (times-i))
        print("")
        print("Game is over...")
    
    guess_number(5)
    ---
    # nested loop
    for i in range(4):
        for j in range(10):
            print("x",sep='',end="")# 指定结尾符号
        print("")
    for i in range(4):
        for j in range(i+1):
            print("x",sep='',end="")# 指定结尾符号
        print("") # 阶梯型
     
    for i in range(5):
        for j in range(5+1):
            if i+j>4:
                print("x",end='')
            else:
                print('T',end='')
        print("") # 指定换行
    
    # list comprehensions
    [[[0] for x in range(5)] for x in range(5)] # 初始化5*5list
    [[0]*5 for x in range(5)] #总结,墙边的操作可以list comprehension
    ---
    # dictionary comprehension
    # Count number of each base in the dna sequence
    dna='ACCGAATTAGT'
    dna_cnt={b : dna.count(b) for b in set(dna)}
    dna_cnt # set() constructure
    # {'A': 4, 'C': 2, 'T': 3, 'G': 2}
    
    # function 
    # An empty function that does nothing
    def do_nothing():
        pass
    type(do_nothing)
    
    # An fucntion without parameters and returns values
    def greeting():
        print("Hello Pyhton")
    # Call the function
    a=greeting()
    
    #  positional arguments
    # A function with 3 parameters
    def menu(wine,entree,dessert):
        return {'wine':wine,'entree':entree,'dessert':dessert}
    # Get a menu
    menu('chardonnay','chicken','cake')
    
    # To avoid positional argument confusion. you can specify arguments by the names of their corresponding parameters. even in a different order from their definition in the function.
    menu(entree='beef',dessert='bagel',wine='bordeaux') # keyword argument
    # You can even mix positional and keyword argument
    # Note:You have to provide all positional argument before feed any keyword argumen
    ---
    
    # default dessert is pudding
    def menu(wine,entree,dessert='pudding'):
        return {'wine':wine,'entree':entree,'dessert':dessert}
    # call menu without providing dessert
    menu('chardonnay','chicken')
    # default parameter 必须放在最后
    # Default value will be overwritten if caller provide a value
    menu('chardonnay','chicken','doughnut')
    
    # 少输入参数的默认处理
    def nonbuggy(arg,result=None):
        if result is None:
            result=[]
        print(id(result))
        result.append(arg)
        print(result)
    
    nonbuggy('a')
    nonbuggy('b')
    
    # *args 输入多个参数,similat to varargin in matlab.
    def print_args(*args):
        print('Positional args:',args)
    #If your function has require positional arguments as well.write all require arguments before you use *. which will gather all arguments until the very last one.
    def print_args_with_require(req1,req2,*args):
        print('require arg 1:',req1)
        print('require arg 1:',req2)
        print('other arguments:',args)
    
    ---
    def print_kwargs(**kwargs):
        print('keyword args:',kwargs)
    
    print_kwargs(first=1,second=1)
    # keyword args: {'first': 1, 'second': 1}
    
    def print_all_args(req1,*args,**kwargs):
        print('require arg1:',req1)
        print('Positional args:',args)
        print('keyword args:',kwargs)
    print_all_args(1,2,3,s='hello') 
    #require arg1: 1
    #Positional args: (2, 3)
    #keyword args: {'s': 'hello'}
    
    
    # Like we talked eariler. We can
    # attach documentation to a 
    # function definition by including a # string at the beginning of the 
    # function body. This can be super 
    # helpful when you are working 
    # with others or when you're using 
    # IDE.
    def print_if_true(thing,check):
        '''
        Print the first argument if the second argument is true.
        The operation is:
            1. check whther the second argument is true
            2. If it is, print the first argument.
        '''
        if check:
            print(thing)
    
    # use help to get the docstring of a function
    help(print_if_true) # 显示说明信息
    
    # lambda function
    double= lambda x: x*3
    double(3) # similar f=@(x) x*3 in matlab
    

    相关文章

      网友评论

          本文标题:2020-02-09python学习

          本文链接:https://www.haomeiwen.com/subject/mfvgxhtx.html