zoukankan      html  css  js  c++  java
  • Python-语法模板大全(常用)

    1.怎么存数据

    插入Python数据类型.png

    变量:

    age =10

    字符串: 不可变对象

    name = "python"

    a = "pythonpythonpython"
    
    # 索引和切片
    a[0]         # index
    a[-1]
    a[0:3]       # slice
    a[0:6:2]
    a[-1:-7:-1]
    a[::-1]          # slice reverse
    

    字符串方法详见:https://www.cnblogs.com/haochen273/p/10244032.html#字符串

    列表:

    [1,2,3,"python"]

    a = [1,2,3,"python"] 
    
    len(a)
    a[0]
    [i*2 for i in a]
    a.append(50)
    a.insert(2,15)
    a.extend([5,8,10])
    a[0]="java"
    "python" in a 
    a.index("python")
    a.count(1)
    a.pop(index)
    

    元组:

    (1,2,3)(不可以更改.与list类似)

    字典:

    {"a":100, "b":"666"}

    d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    
    d['Michael']
    d['Adam'] = 67
    'Thomas' in d
    d.get('Thomas')
    d.pop('Bob')
    

    三大容器的遍历方法

    a = [1,2,3]
    for i in a:
        print(i)
    
    b = (1,2,3)
    for i in b:
        print(b)
    
    c = {"a":10, "b":20, "c":30}
    for key,value in dict.items():
        print("key = %s, value = %d"%(key,value))
    

    2.怎么用数据

    数字操作符:

    +、-、*、/、%、//、**

    判断循环:

    • if判断:
    if a>10:
      b = a + 20
      if b>20:
        pass
    elif: a>8:
      pass
    else:
      pass
    
    • while循环
    while i<5:
      # do something
      pass
      i = i + 1
    
    while true:
      pass
    
    • for循环
    for i in [1,2,3]:
        print(i) 
    
    • break和continue的使用
    # break:打断全部循环
    for i in [1,2,3,4,5]:
        print("----")
        if i==4:
            break
        print(i)  
    # continue: 打断一次循环
    for i in [1,2,3,4,5]:
        print("----")
        if i==4:
            continue
        print(i)
    

    3.函数

    # 位置参数
    def person(name, age):
      print(name,age)
    
    # 默认参数
    
    def person(name,age=20):
      print(name, age)
    
    # 关键字参数
    def person(name, age, **kw):
        print('name:', name, 'age:', age, 'other:', kw)
    
    person('hao', 20) # name: Michael age: 30 other: {}
    person('hao', 20, gener = 'M', job = 'Engineer') # name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
    extra = {'city': 'Beijing', 'job': 'Engineer'}
    person('Jack', 24, **extra)
    
    # 命名关键字参数
    def person(name, age, *, city='Beijing', job):
        print(name, age, city, job)
    
    person('Jack', 24, job = '123')
    person('Jack', 24, city = 'Beijing', job = 'Engineer')
    
    # Combination
    # 可变 + 关键字参数
    def f1(a, b, c=0, *args, **kw):
        print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
    
    f1(1, 2, 3, 'a', 'b')   # a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
    f1(1, 2, 3, 'a', 'b', x=99) # a = 1 b = 2 c = 0 d = 99 kw = {'ext': None}
    
    # 默认参数 + 命名关键字参数 + 关键字参数
    def f2(a, b, c=0, *, d, **kw):
        print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
    
    f2(1, 2, d=99, ext=None) # a = 1 b = 2 c = 0 d = 99 kw = {'ext': None}
    

    4. Python核心编程

    4.1. 列表生成器

    [x * x for x in range(1, 11) if x % 2 == 0]
    

    5. 类和对象

    5.1. 定义类的模板

    class Student(object):
        def __init__(self, name, score):
            self.__name = name
            self.__score = score
    
        # print(mike)
        def __str__(self):
            msg = "name: " + self.__name + "score: " + str(self.__score)
            return msg
    
        # mike
        __repr__ = __str__
        # mike()
        __call__ = __str__
    
        @property
        def name(self):
            return self.__name
    
        @name.setter
        def name(self, value):
            if type(value) == str:
                self.__name = value
            else:
                raise ValueError('Bad name')
    
        @property
        def score(self):
            return self.__score
    
        @score.setter
        def score(self, value):
            if 0 <= value <= 100:
                self.__score = value
            else:
                raise ValueError('Bad score')
    
        def final_report(self):
            if self.__score >= 90:
                level = 'A'
            elif self.__score >= 70:
                level = 'B'
            elif self.__score >= 60:
                level = 'C'
            else:
                level = 'D'
            msg = "Your final value is: " + level
            return msg
    
    # 调用
    
    mike = Student('mike', 85)
    print("-" * 20 + "Print property" + "-" * 20)
    print(mike)
    print("name: %s" % (mike.name))
    print("-" * 30 + "Print methods" + "-" * 20)
    print(mike.final_report())
    print("-" * 30 + "Print modified infor" + "-" * 20)
    mike.name = "Obama"
    mike.score = 50
    print("-" * 30)
    print("modified name: %s" % (mike.name))
    
    
    --------------------Print property--------------------
    name: mikescore: 85
    name: mike
    ------------------------------Print methods--------------------
    Your final value is: B
    ------------------------------Print modified infor--------------------
    ------------------------------
    modified name: Obama
    

    5.2.继承

    class SixGrade(Student):
        def __init__(self, name, score, grade):
            super().__init__(name, score)
            self.__grade = grade
    
        # grade是一个只读属性
        @property
        def grade(self):
            return self.__grade
    
        def final_report(self, comments):
            # 子类中调用父类方法
            text_from_Father = super().final_report()
            print(text_from_Father)
            msg = "commants from teacher: " + comments
            print(msg)
    
    print("-" * 20 + "继承" + "-" * 20)
    fangfang = SixGrade('fang', 95, 6)
    fangfang.final_report("You are handsome")
    print(fangfang.grade)
    
    --------------------继承--------------------
    Your final value is: A
    commants from teacher: You are handsome
    6
    

    5.3 多态

    class SixGrade(Student):
        pass
    
    class FiveGrade(Student):
        pass
    
    def print_level(Student):
        msg = Student.final_report()
        print(msg)
    
    print_level(Student('from class', 90))
    print_level(SixGrade('from subclass-1', 56))
    print_level(FiveGrade('from subclass-2', 85))
    
    Your final value is: A
    Your final value is: D
    Your final value is: B
    

    6. IO文件操作和OS目录操作

    OS操作

    import os
    # 获取当前目录的绝对路径
    path = os.path.abspath('.')
    # 创建一个目录
    os.path.join('/Users/michael', 'testdir')
    os.mkdir('/Users/michael/testdir')
    # 删除一个目录
    os.rmdir('/Users/michael/testdir')
    # 拆分路径
    os.path.split('/Users/michael/testdir/file.txt')  # ('/Users/michael/testdir', 'file.txt')
    os.path.splitext('/path/to/file.txt')  # ('/path/to/file', '.txt')
    # 重命名
    os.rename('test.txt', 'test.py')
    # 删除文件
    os.remove('test.py')
    # 列出所有python文件
    [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
    

    IO文件

    方法 特性 性能
    read() 读取全部内容 一般
    readline() 每次读出一行内容 占用内存最少
    readlines() 读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素 最好(内存足)
    write() 写文件
    # 读
    
    # 下面是read()方法的使用,“r”表示read
    with open('testRead.txt', 'r', encoding='UTF-8') as f1:
        results = f1.read()    # 读取数据
        print(results)
    
    # 下面是readline()方法的使用,“r”表示read
    with open('testRead.txt', 'r', encoding='UTF-8') as f2:
        line = f2.readline()    # 读取第一行
        while line is not None and line != '':
            print(line)
            line = f2.readline()    # 读取下一行
    
    # 下面是readlines()方法的使用,“r”表示read
    with open('testRead.txt', 'r', encoding='UTF-8') as f3:
        lines = f3.readlines()    # 接收数据
        for line in lines:     # 遍历数据
            print(line)
    
    # 写
    
    with open('/User/test.txt', 'w') as f:
      f.write('hello')
    

    7. 正则表达式及re模块的使用

    主要参考资料为:

    6.1. 正则表达式语法

    7.2. re模块的使用

    内置的 re 模块来使用正则表达式,提供了很多内置函数:

    1. pattern = re.compile(pattern[, flag]):
    • 参数:
      • pattern: 字符串形式的正则
      • flag: 可选模式,表示匹配模式
    • 例子:
    import re
    
    pattern = re.compile(r'd+')
    
    1. Pattern的常用方法
    import re
    
    pattern = re.compile(r'd+')
    
    m0 = pattern.match('one12twothree34four')
    m = pattern.match('one12twothree34four', 3, 10)
    
    print("-" * 15 + "Match methods" + "-" * 15)
    print("found strings: ", m.group(0))
    print("start index of found strings: ", m.start(0))
    print("end index of found strings: ", m.end(0))
    print("Span length of found strigns: ", m.span(0))
    
    s = pattern.search('one12twothree34four')
    
    print("-" * 15 + "Search methods" + "-" * 15)
    print("found strings: ", s.group(0))
    print("start index of found strings: ", s.start(0))
    print("end index of found strings: ", s.end(0))
    print("Span length of found strigns: ", s.span(0))
    
    f = pattern.findall('one1two2three3four4', 0, 10)
    
    print("-" * 15 + "findall methods" + "-" * 15)
    print("found strings: ", f)
    
    f_i = pattern.finditer('one1two2three3four4', 0, 10)
    
    print("-" * 15 + "finditer methods" + "-" * 15)
    print("type of method: ", type(f_i))
    for m1 in f_i:  # m1 是 Match 对象
        print('matching string: {}, position: {}'.format(m1.group(), m1.span()))
    
    p = re.compile(r'[s\,;]+')
    print("-" * 15 + "Split methods" + "-" * 15)
    print("split a,b;c.d: ", p.split('a,b;; c   d'))
    
    p1 = re.compile(r'(w+) (w+)')
    s1 = 'hello 123, hello 456'
    
    
    def func(m):
        return 'hi' + ' ' + m.group(2)
    
    
    print("-" * 15 + "替换 methods" + "-" * 15)
    print(p1.sub(r'hello world', s1))  # 使用 'hello world' 替换 'hello 123' 和 'hello 456'
    print(p1.sub(r'2 1', s1))  # 引用分组
    print(p1.sub(func, s1))
    print(p1.sub(func, s1, 1))  # 最多替换一次
    

    结果是:

    ---------------Match methods---------------
    found strings:  12
    start index of found strings:  3
    end index of found strings:  5
    Span length of found strigns:  (3, 5)
    ---------------Search methods---------------
    found strings:  12
    start index of found strings:  3
    end index of found strings:  5
    Span length of found strigns:  (3, 5)
    ---------------findall methods---------------
    found strings:  ['1', '2']
    ---------------finditer methods---------------
    type of method:  <class 'callable_iterator'>
    matching string: 1, position: (3, 4)
    matching string: 2, position: (7, 8)
    ---------------Split methods---------------
    split a,b;c.d:  ['a', 'b', 'c', 'd']
    ---------------替换 methods---------------
    hello world, hello world
    123 hello, 456 hello
    hi 123, hi 456
    hi 123, hello 456
    
  • 相关阅读:
    HDU 6182 A Math Problem 水题
    HDU 6186 CS Course 位运算 思维
    HDU 6188 Duizi and Shunzi 贪心 思维
    HDU 2824 The Euler function 欧拉函数
    HDU 3037 Saving Beans 多重集合的结合 lucas定理
    HDU 3923 Invoker Polya定理
    FZU 2282 Wand 组合数学 错排公式
    HDU 1452 Happy 2004 数论
    HDU 5778 abs 数论
    欧拉回路【判断连通+度数为偶】
  • 原文地址:https://www.cnblogs.com/haochen273/p/10256418.html
Copyright © 2011-2022 走看看