zoukankan      html  css  js  c++  java
  • day03

    1.set集合--无序的,不重复的序列,类似dict,但是只有key,没有value

    创建一个集合:

    s1 = {11,22,33}

    s2 = set((22,33,44))必须传入一个可迭代对象(tuple、list、字符串)作为参数

    s3 = set([11,22,33])

    s4 = set('112233')

    s1.add(44)增加一个元素

    s1.update(s4)批量增加

    s1.difference(s2) s1里边有的,s2里边没有的

    s2.difference(s1) s2里边有的,s1里边没有的

    2.异常检查 try except else finally语句

    try为异常检语句

    如果try语句范围内代码执行成功,则else下的语句也执行

    否则执行except下的语句

    finally下的代码无论try是否成功都执行。

    3.while  else 语句

    当while循环顺利执行完毕后,else语句会被执行,当while循环被中断(例如break),else语句不会执行。

    下边代码 else会执行

    1 count = 0
    2 while count < 3:
    3     print(count+1)
    4     count += 1
    5 else:
    6     print('else执行了')

    下边代码else不会执行

    1 count = 0
    2 while count < 3:
    3     print(count+1)
    4     if count ==2:
    5         break
    6     count += 1
    7 else:
    8     print('else执行了')

     

    4.函数返回值return

    如果函数里边没有写return语句,函数会自动返回一个值None

    1 def func():
    2     print('test')
    3 
    4 req = func()
    5 print(req)

    5.os.path.exists(filename)用来判断文件是否存在

    举例:

    1  file = '/root/result.txt'
    2  if os.path.exists(file):
    3      os.remove(file)

    6.函数的参数:

    普通参数:(形式参数<-->实际参数)

    举例:

    def func1(name, age, sex):  # name,age,sex为形式参数
        print(name, age, sex)
    
    
    func1('Jack', 22, 'male') # Jack,22,male为实际参数

    默认参数:(必须放在参数列表的后边)

    def func1(name, age, sex='male'): # sex为默认参数
    print(name, age, sex)


    func1('Miffy', 22, 'female')
    func1('Terry', 23)

    指定参数:

    def func1(name, age, sex='male'):
        print(name, age, sex)
    
    
    func1(age=22, sex='female', name='Lily')  # 不必注意顺序
    
    

    动态参数:

    一个*

    如果传的参数是单个元素,默认将传入的参数放到一个元祖中,如果参数是一个列表,则将列表作为元祖的一个元素。

    def func1(*args):
        print(args)
    
    func1(11, 22, 33, 44)
    def func1(*args):
        print(args)
    
    l1 = ['aa','bb','cc']
    func1(11, l1, 33, 44)

     如果给参数加上*,将会把元素通过for循环展开把参数的每个元素组成一个元祖。

    def func1(*args):
        print(args)
    
    l1 = ['aa','bb','cc']
    func1(*l1)

     动态参数:

    **2个星

    默认传入一个指定参数,将指定参数以key,value的方式放到一个字典中。

    def func1(**args):
        print(args)
    
    func1(name='terry')

    如果传入的指定参数的值为字典,dic的value将为一个字典。

    def func1(**args):
        print(args)
    
    
    d1 = {'k1': 'v1', 'k2': 'v2'}
    func1(dic=d1)

    如果传入的字典带**,将会把传入的字典的每个元素放入新的字典中。

    def func1(**args):
        print(args)
    
    
    d1 = {'k1': 'v1', 'k2': 'v2'}
    func1(**d1)

    万能参数(*args,**kwargs)必须一个星在前边,2个星的在后边 (args,kwargs可以随便写,一般建议写成这样)

    def func1(*args, **kwargs):
    print(args)
    print(kwargs)

    d1 = {'k1': 'v1', 'k2': 'v2'}
    func1(11,22,33,dict=d1)

    python的字符串format函数:其实就是万能参数的形式

    举例:

    s = 'I am {0},my age is {1}'.format('terry', 18)
    print(s)
    s = 'I am {0},my age is {1}'.format(*['terry', 18])
    print(s)

    s = 'I am {name},my age is {age}'.format(age=18, name='terry')
    print(s)
    
    d1 = {'name':'terry', 'age':18}
    s = 'I am {name},my age is {age}'.format(**d1)
    print(s)

    python的函数传参数传递的是一个引用,而非重新复制一份参数

    例子:

    def func1(a1):
        a1.append(999)
    
    l1 = [11, 22, 33]
    func1(l1)
    print(l1)                            如果是重新复制的话,a1指向的列表是另一个地址,所以a1.append(999)和l1是没有关系的
                          如果是引用的话,a1和l1都指向同一个列表地址,a1.append(999)后,l1也会改变。
                          如下执行结果

     7.三元运算符(对于简单的if else语句可写成三元运算符的形式)

    if 1 == 1:
        name = 'alex'
    else:
        name = 'eric'
    
    
    name = 'alex' if 1 == 1 else 'eric'

     8.lamda表达式(对于简单的函数可以写成lamda表达式的方式)

    def f1(a1):
        return a1 + 100
    print(f1(10))
    
    f = lambda a1: a1 + 100
    print(f(10))

     9.python 内置函数bytes()

    s = '奥运'
    
    ret = bytes(s,encoding='utf-8') # 用utf-8编码,一个汉字占3个字节
    print(ret)
    
    ret = bytes(s,encoding='gbk')  # 用gbk编码,一个汉字占2个字节
    print(ret)

    10.文件操作

    f = open('xxx','r+') # 可读,可写

    f.tell() # 获取指针,以字节为单位

    f.seek(1) # 调整当前指针的位置,从指针位置往后写,后边的内容会覆盖,以字节为单位。

    f.flush() # 强刷

    f.truncate() #截断,将指针后边的内容清空

    for 循环迭代文件:

    f = open('xxx')

    for line in f:

      print(line)

    f.close()

  • 相关阅读:
    PAT 1010. 一元多项式求导 (25)
    PAT 1009. 说反话 (20) JAVA
    PAT 1009. 说反话 (20)
    PAT 1007. 素数对猜想 (20)
    POJ 2752 Seek the Name, Seek the Fame KMP
    POJ 2406 Power Strings KMP
    ZOJ3811 Untrusted Patrol
    Codeforces Round #265 (Div. 2) 题解
    Topcoder SRM632 DIV2 解题报告
    Topcoder SRM631 DIV2 解题报告
  • 原文地址:https://www.cnblogs.com/terrycy/p/5774597.html
Copyright © 2011-2022 走看看