Python编程学习总结

一、python基础

1、python软件安装、环境配置

Python 是一门面向对象的编程语言,最初由Guido van Rossum在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
常用的编译器有:annaconda、pycharm、eclipse、Sublime Text、Visual Studio等。个人比较倾向于使用Annaconda及pycharm,安装可参考:https://blog.csdn.net/weixin_43917062/article/details/106056890?spm=1001.2014.3001.5501

2、常用的字符编码集

编码时间解释
ISO-8859-1西欧字符集,单字节编码
ASCII1967年单字节编码,用于现代英语和其他西欧语言
GB23121980年双字节编码,国家简体中文字符集,兼容ASCII
Unicode1991年国际标准统一字符集,一般用2字节表示一个字符
UTF-81992年可变长编码,编码成1-6字节,英文通常是1字节,中文是3字节
GBK1995年GB2312的扩展字符集,支持繁体字

3、数据类型

类型特点
Numbers(数字)int、float、complex、bool
String(字符串)有序可改变集合,允许重复数据。
List(列表)有序不可改变集合,允许重复数据。
Tuple(元组)有序可改变集合,允许重复数据。
Dictionary(字典)无序无索引(索引为键值)集合,无重复数据。
Set(集合)无序,可变,有索引集合,无重复数据。

4、列表操作

变量的定义:变量是可以赋给值的标签,也可以说是变量指向特定的值。
变量的命名规则:只能包含字母、数字和下划线,不能包含空格及Python的关键字和函数名;变量名应既简短,又具有描述性;慎用小写字母l和大写字母O

列表:是由一系列按特定顺序排列的元素组成。
元组:python将不能修改的值称为不可变的,而不可变的列表称为元组。
元组是由逗号标识的,圆括号只是让元组看起来更整洁清晰;如果要定义只有一个元素的元组,必须在这个元素后面加上逗号,a=(3,) ;虽不能修改元组的元素,但可以给存储元组的变量赋值。

  • 创建:直接创建、使用list指定范围创建
  • 索引:指列表中元素的位置,第一个列表元素的索引为0.而不是1;通过将索引指定为-1,可以让其返回最后一个列表元素
  • 修改:指定列表名和要修改元素的索引,再指定该元素的值。注:列表可修改,元组不可修改
  • 添加:a.append() 可在列表末尾添加,a.insert(0,‘1’) 可指定索引和值
  • 删除:使用del语句,del a[0] ;使用pop() 方法,a.pop(0) ; 根据值删除元素,a.remove(‘xx’)
  • 排序:使用sort()方法对列表进行永久排序,使用sorted()方法对列表进行临时排序
  • 切片: a[2:4],其中a,b表示要切分位置的索引
  • 遍历:使用for循环对列表中的每个元素进行遍历,如,for city in citys:
  • 计数:a.count() 方法
def my_list1():
    a = [1, 2, 3, 4]            # 列表的创建:直接创建
    a = list(range(1, 5))       # 列表的创建:使用list指定范围创建
    b = (1, 2, 3, 4)
    
    b = tuple(range(1, 5))      # 元组的创建
    print(a[0], a[-1])          # 列表索引:从零开始,-1表示最后位置,
    print(a[1:3])               # 列表切分:[a:b],其中a,b表示要切分位置的索引
    
    a[2] = 5                    # 列表中的值可修改
    b = [1, 2, 5, 4]            # 元组中的值不可修改,只能对指向元组的变量重新赋值
    print(b)                    # 元组不可修改,只可重新给变量赋值

    c = sorted(a)               # 列表排序:sorted 临时性排序,不会改变原始列表中的值
    a.sort()                    # 列表排序:sort 永久排序,改变原始列表中值的顺序
    print(a)

def my_list2():
    a = ['北京','天津','深圳','上海']
    a.append('北京')             # 添加元素:append方法,在列表末尾添加元素
    a.insert(2,'北京')           # 添加元素:insert方法,可在列表指定位置添加元素
    print(a)

    del a[1]                    # 删除元素:del[0] 永久删除指定位置的元素
    a.pop(0)                    # 删除元素:pop方法,
    a.remove('北京')             # 删除元素:remove,删除指定内容元素,但只可删除第一次出现的位置

    while a.count('北京')>0:     # 计数:count方法,返回列表中指定内容出现的次数
        a.remove('北京')

    for city in a:              # 列表遍历:遍历列表中的每一个元素
        if city == '北京':
            a.remove('北京')
    print(a)

5、字符串操作

字符串就是一系列字符。在Python中,用引号括起来的都是字符串,可以是双引号也可以是单引号。

常用操作有:

  • 大小写:name.upper() 或name.lower() 方法
  • f 字符串:f 是format的简称,可通过print(’{}’.format(mystr)) 的方式输出字符串
  • 删除空白:strip() 、rstrip() 、lstrip() 可分别用于删除字符串两边、末尾和开头的空白
  • 替换:mystr.replace(’ ‘,’’)
  • 查询:返回查找内容的索引值,有 find 和 rfind
  • 统计:str.count(‘xx’)
def my_str():
    str1 = '今天天气真好,   '
    str2 = '  很喜欢晴天的天气!  '
    mystr = str1 +str2              # 字符串拼接:直接相加
    mystr = mystr.strip()           # 只能剔除前后的空格
    mystr = mystr.replace(' ','')   # 替换:replace方法
    print(mystr)
    print('{}'.format(mystr))       # print两种方式

    index = mystr.rfind('天气')      # 查找:返回查找内容的索引值,有 find 和 rfind
    print(index)

    cnt = mystr.count('天气')        # 统计个数:count方法
    print(cnt)

6、字典

字典:字典是一系列键值对,每个键都与一个值相关联,可使用键来访问相关联的值。

  • 创建:字典是一种动态结构,要添加键值对,可依次指明键值对,用方括号括起的键和相关联的值。
  • 访问:使用get() 方法来访问值,a.get(‘name’)
  • 遍历:for keys,values in a.items():,返回键值对; for keys in a.keys():返回键
  • 嵌套:将一系列的字典存储到列表中,或将列表作为值存储到字典中。
def my_dict():
    a = {'name':'张三', 'age':18, 'gender':'male'}        # 字典的创建:方式一
    a = dict(name = '张三', age = 18, gender = 'male')    # 字典的创建:方式二,使用dict
    key = ['name','age', 'gender']
    value = ['张三', 18 ,'male']
    a = dict(zip(key,value))                              # 字典的创建:方式二,使用dict和列表

    name = a.get('name')                                  # 字典访问:使用get方法访问字典中的值
    print(name)

    for keys,values in a.items():                         # 遍历字典中的关键字及键值
        print(keys,':',values)

    # 字典和列表嵌套
    info = []
    b = {'name': '李四', 'age': 19, 'gender': 'male'}
    c = {'name': '王五', 'age': 20, 'gender': 'male'}
    info.append(a)
    info.append(b)
    info.append(c)

    return info

7、函数

函数定义:向Python指出了函数名,还可能在圆括号内指出完成任务需要什么样的信息,使用关键字def 来定义一个函数。

  • 形参:函数完成工作所需要的信息
  • 实参:调用函数时传递给函数的信息
  • 位置实参:要求实参的顺序与形参的顺序相同
  • 关键字参数:每个实参都由变量名和值组成,顺序可与形参不一致
  • 列表和字典传参
  • 传递任意数量的位置实参:*args
  • 传递任意数量的关键字实参:**kwargs
def hello(info):
    '''
    形参:def hello(info)中的info
    实参:主函数hello(info)中的info
    '''
    for a in range(len(info)):
        print('Hello {}!'.format(info[a].get('name')))

def introdution(name='张三', age=18, gender='male'):
    print('my name is {},{} years old, gender is {}!'.format(name, age, gender))

def get_naems(name):
    for names in name:
        print('hello {} !'.format(names.title()))

def get_naems2(*name):
    for names in name:
        print('hello {} !'.format(names.title()))

def introdution2(name='张三',**info):
    print('my name is {}'.format(name))
    for infomation in info:
        print('{} is {}!'.format(infomation,info[infomation]))
if __name__ == '__main__':
    info = my_dict()
    hello(info)
    
    introdution('张三', 18, 'male')                   # 位置参数
    introdution(age= 19, name='李四',gender='male')   # 关键字传参
    introdution(name='李四')                          # 传递部分关键字参数,其他使用默认值

    name = ['张三', '李四', '王五']
    get_naems(name)         # 传递列表

    # 传递任意位置参数
    get_naems2('张三', '李四','张三', '李四')

    # 传递任意关键字参数
    introdution2(name='张三', age =18, gender = 'male', xueli='大学')

8、类

  • 面向对象编程:表示现实世界中的事物和情景的类,并基于这些类来创建对象。编写类时,定义一大类对象都有通用的行为。

  • 创建对象:每个对象都自动具备这种通用行为,然后根据需要赋予每个对象个性。

  • 创建和使用类:类中的函数称为方法,开头和末尾都有两个下划线。形参self必不可少,而且必须位于其他形参前面。每个实例相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
    class Info():
    def init(self,name ,age, gender, xueli):

  • 继承:如果要编写的类是另一个类的特殊版本,可使用继承。一个类继承另一个类时,将自动获得另一个类的所有属性和方法,原有的类称为父类,新的类称为子类。
    创建父类时,父类必须包含在当前文件中,且位于子类前面。定义子类时,必须在圆括号内指定父类的名称。super() 是一个特殊函数,能够调用父类的方法。

class Info():
    '''
    面向对象的编程语言:对象(数据和功能)、类、 方法、 继承、 重写
    '''
    def __init__(self,name ,age, gender, xueli):
        '''
        定义初始化函数,init表示一种方法
        形参self必不可少,可自动传递
        '''
        self.name = name
        self.age = age
        self.gender = gender
        self.xueli = xueli

    def study(self):
        print('{} 喜欢学习!'.format(self.name))

    def sports(self):
        print('{} 喜欢运动!'.format(self.name))


class Info2(Info):
    def __init__(self,name ,age, gender, xueli, color):
        super().__init__(name ,age, gender, xueli)
        self.color = color

    def cloth(self):
        print('{} 衣服颜色是 {} !'.format(self.name, self.color))

    def sports(self):
        print('{} 不喜欢运动!'.format(self.name))
if __name__ == '__main__':
    my_info = Info(name='张三', age =18, gender = '男', xueli='大学')
    my_info.study()
    my_info.sports()

    my_info2 = Info2('李四', 19, '男', '高中','蓝色')
    my_info2.study()
    my_info2.cloth()
    my_info2.sports()

二、常用包函数:numpy、pandas、matplotlib

  • 读取文件:函数open() 接受的参数包含要打开文件的名称,关键字with在不需要访问文件后将其关闭。
  • numpy:用来存储和处理大型矩阵
  • pandas:用于解决数据分析任务
  • matplotlib:可以生成绘图、直方图、条形图、散点图等
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if __name__ == '__main__':
    path = './data.txt'
    '''
    r:只读
    w:写
    a:末尾添加
    r+:读写模式
    '''
    with open(path,'a') as data:
        data.write('e 90')
        data.write('\n')

    with open(path, 'r') as data:
        name = []
        value = []
        for line in data:
            a,b = list(line.strip().split(' '))
            name.append(a)
            value.append(int(b))
    print(name,value)

    value = np.array(value)
    print(value)
    value2 = pd.DataFrame(value)
    print(value2)
    print(float(value2.sum()))
    print(float(value2.mean()))

    plt.plot(name,value)
    plt.show()

三、实例

1、冒泡排序

def maopao(a):
    for i in range(len(a)-1):
        for j in range(len(a)-1-i):
            if a[j] > a[j+1]:
                temp = a[j]
                a[j] = a[j+1]
                a[j+1] = temp
    return a

if __name__ == '__main__':
    data = input()
    a = list(data.split(' '))
    for i in range(len(a)):
        a[i] = int(a[i])
    print('排序前:', a)

    b = maopao(a)
    print('排序前:', b)

2、爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。

class Solution(object):
    def climbStairs(self, n):
        p,q,r = 0,1,2
        if n<3:
            return n
        for i in range(3,n+1):
            p,q = q,r
            r = p + q
        return r
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值