美文网首页
python从入门到入土教程(1)——入门课

python从入门到入土教程(1)——入门课

作者: 孙小灰灰 | 来源:发表于2020-01-09 16:17 被阅读0次

    一 前言

    1 why python?

    Python是数据科学界的主流编程语言,相对于传统的Excel等数据处理工具,Python具备处理海量数据的能力,并且可以执行机器学习算法。从数据获取(网络爬虫等工具)、数据清理到数据分析拟合再到最终的可视化呈现,Python都能胜任。

    相比C、C++、Fortran等编译语言,Python作为动态解释语言,可以像Matlab等科学计算工具一样“写一行,跑一行”——更加用户友好,也更适于新手入门。在日渐繁荣的机器学习、人工智能领域更是独当一面,这是Python近年来热度稳步攀升甚至在有的统计中高居榜首的原因,也是本站选择Python作为主要编程语言的原因。

    2 python能做啥

    • 嵌入式开发;
    • 游戏开发;
    • Web开发;
    • 运维监控;
    • 网页爬虫;
    • 数据可视化;
    • 数据分析与挖掘;
    • 机器学习;

    3 python的特点

    • 面向对象

    • 动态、解释性语言

    • 支持库和框架多而广泛

    • 跨平台

    • 开源(源码获得)

    • 简单、强大

    • 社区活跃

    • 人生苦短,我用python

    • Life is short, you need Python!

    4 python的安装以及用pip管理包

    python -m pip install --upgrade pip
    python的第一个代码,helloworld

    二 变量(Variable)

    1 变量(Variable)和运算符

    在实际应用当中,很多数值将反复出现,比如圆周率π,或者自然常数e

    (常量也是一种变量),如果不想每次都重复输入十几位小数的话,最好预先定义为变量,更不用说那些需要频繁变动的参数。

    Python中定义变量非常简单,只需要起好名字,用等号赋值。

    除下划线_以外的特殊符号如+,-不能用于命名变量。
    Python中已有的关键字如for,if,import也不能直接用作变量名。
    当然只要不是完全匹配的,像forif,for_if还是可以的,只是一般不推荐。

    a = 1
    a = "xiaoming"
    a = True
    print(a)
    type(a)
    

    我们不一样,每个人都有不同的鲸鱼。——《我们不一样》

    人和人不一样,值和值也不一样,首先是类型不一样。
    经过之前的实践,我们已经得到了"Hello, world!"这句话,和1这个数,一个是字符串(str)一个是整数(int)。
    Python中不需要预先定义所有的变量数据类型,解释器会自己根据内容去推测。
    如果想知道某个变量的类型,可以使用type()这个函数。

    2 字符串(string)

    字符型常量是以单引号、双引号或三重引号引起来的对象
    引号内不能直接包含相同的引号
    对于单双混合问题,可找三引号,而且其还可以写入多行字符串;
    通过转义()的方法完成特殊字符串的输入;

    nameStr = '马云'
    moneyStr = '有钱'
    #字符串合并
    print('用+将字符串合并:', nameStr + moneyStr)
    
    mo = "苟利国家生死以, 岂因祸福避趋之"
    #len(mo)##求字符串长度
    #mo[0:7] ##对字符串切片
    mot = "苟利\t国家生死以,\n岂因祸福避趋之" ##转义字符
    print(mo[3])
    

    3 数值(number)

    Python支持3种数值类型:

    int :整数比如1024。
    float :俗称“带小数点的”,比如19.26。
    complex :复数比如8 + 17j
    

    Python支持常见的数值计算,总结如下:
    符号 含义 例子 结果

    • 加法 42 + 1 43
    • 减法 42 - 0.5 41.5
    • 乘法 1234 * 2 2468
    • / 浮点除法 1 / 2 0.5
    • // 整型除法 1 // 2 0
    • ** 指数 8 ** 2 64
    • % 余数 20 % 3 2
      当多个运算符同时存在时,解释器会按照一定的优先级次序执行。
    • 运算符 描述
    • () 括号
    • f(args...) 函数调用
    • x[index:index] 列表切片
    • x[index] 列表取值
    • x.attribute 对象属性
    • ** 指数
    • ~x 按位取非(NOT)
    • +x, -x 正值,负值
    • *, /, % 乘除,余数
    • +, - 加法,减法
    • <<, >> 位移
    • & 按位取与(AND)
    • ^ 按位取亦或(XOR)
    • in, not in, is, is not, <, <=, >, >=, <>, !=, == 比较与从属关系
    • not x 布尔值 非
    • and 布尔值 与
    • or 布尔值 或
    • lambda lambda表达式
    ##增强型赋值运算
    n1 = 1
    n1 = n1 + 1
    n1 += 1
    n1
    
    ##但是不支持X++这种写法
    

    4 布尔值(bool)

    • 至此我们已经写了很多Python语句,其中最多的是赋值语句。
    • 语句是为了产生效果,比如count = 1就是把变量count的值变成了1。
    • 但是语句本身只是一个动作,并没有相应的值存在。
    • 另一种代码单元则相反,其本身不产生效果,但是却像变量一样具有值,这就是表达式。
    var1 = "丁"
    var2 = "卯"
    
    var1 == var2
    

    比较
    in, not in, is, is not, <, <=, >, >=, <>, !=, == 比较与从属关系

    逻辑运算
    not x 布尔值 非
    and 布尔值 与
    or 布尔值 或

    t, f = True, False
    
    print("t and f = ", t and f) 
    print("t or f = ", t or f)  
    print("not t = ", not t)   
    print("t != f = ", t != f)  
    

    至此我们已经见过了Python编程当中最常用的几种变量类型,在应用中经常需要来回转换一个变量的类型,比如做网络爬虫指定目标URL的后缀,可能是关于页数的"?page=8"。
    当我们要通过循环翻页的时候,就会迭代生成递增的数字,但是这些数字必须要转换成字符串才能拼接到URL当中,因为爬虫函数只识别字符串。

    虽然看起来长得一样,但是变量的类型决定了它们能够参与哪些运算,整数和字符串的+含义就完全不同。
    如果变量类型不匹配,还会造成很多函数、方法不能正常运行,这是实践中需要特别注意的。

    isinstance(233,int)#查看变量是否是猜测类型insinstance(变量,猜测类型)
    #input() # 输入所得到的是字符串
    
    # 类型转换
    int()   # 转换类型为整形
    float() # 转换类型为浮点型
    complex()   # 复数型
    bool()  # 布尔型
    
    #a = input()
    b = 1
    
    ##print(a + b)
    print(int(a) + b)
    
    #编写求圆面积的程序
    #编写一个求圆柱体积的程序
    import math
    r = input()
    r = float(r)
    s = math.pi * r * r
    print(s)
    

    三 数据容器

    1 列表

    列表中的元素通过逗号(,)分隔,由方括号([])包含,比如一串数字或者一系列字符。

    l1 = [1,1,2,3,5,8]
    l2 = ["金坷垃","圣地亚哥","威廉伯爵","流失","蒸发"]
    l = ["字符串", 114514, ["列表也可以作为元素"]]
    
    #丹妮莉丝·塔格利安的头衔很长,请帮她把这些头衔存到一个列表titles当中,每个元素对应一个荣誉称号。
    #用len()函数获取头衔列表的元素个数,并赋值给变量num_titles。
    # 安达尔人、洛伊拿人和先民的女王
    # 七国女王、全境守护
    # 大草海的卡丽熙
    # 龙石岛公主
    # 碎镣者
    # 不焚者
    # 龙之母
    
    ll = [1, 1, 2, 3, 5, 8]
    
    ll[2:5]  
    

    创建列表是为了在程序中使用,多数情况下我们需要的是列表中的某个元素而非整个集合,而指向某个特定元素就是通过索引(index)。

    列表中的元素是有序的,第一个元素的索引为0,第二个索引为1,依次类推。

    获取某个元素的方法是:在列表对象后面紧跟方括号([]),方括号内写有该元素的索引值。元素的索引可以是负数,此时表示倒序排列,如[-1]对应最后一个元素。

    如果 [] 只有一个索引值,就会直接访问索引对应的元素,可以认为是切割的一个特例。
    若未提供 start,则相当于 start = 0。
    若未提供 end,或 end 大于列表长度,则相当于 end 指向列表末尾。
    若 start >= end,list[start:end] 将返回空列表
    
    l5 = [[1,1,1],[2,2,2,],[3,3,3]]
    ##取出列表里的列表
    l5[1][1]
    
    ##列表的运算
    #与字符串相似,+ 对于列表是拼接操作,* 是复制列表内的元素,依次构成新列表。
    l1 = [1, 2, 3, 4]
    l2 = ["Pa", "Pa", "Pa"]
    
    # 列表加法
    l1 + l2
    
    
    # 列表乘法
    l2 * 3 
    
    • append方法  每次只能在列表末尾增加一个元素
    • insert方法  每次可以在列表的指定位置增加一个元素
    • extend方法  每次可以在列表的末尾增加多个元素 ,等同于”+”连接
    • pop方法  每次默认删除最后一个元素,还可通过索引的方式删除指定的一个元素
    • remove方法  每次可删除列表中指定的一个实际值
    • clear方法  清空列表中的元素
    • sort方法  默认升序,但需要注意的是,列表中的元素必须为同一种数据类型
    • reverse方法  列表元素颠倒
    • index方法  返回指定元素第一次出现的位置
    • count方法  统计列表中某个元素的次数
    • copy方法  复制列表,与[:]一样的效果
    ##字符串可以转换为列表
    
    str = "1颗赛艇, 3件小事, 5可奉告"
    
    l1 = list(str)
    print(l1.count(","))
    
    #列表推导式
    l1 = [ x for x in range(10) ]
    
    
    
    l2 = [ x + 1 for x in range(10) ]
    
    
    
    l3 = [ 2*x for x in range(10)  ]
    l3
    

    列表b = [23,45,22,44,25,66,78]
    用列表解析完成下面习题:
    1)生成所有奇数组成的列表
    2)输出结果: [25, 47, 24, 46, 27, 68, 80]

    2 元组

    元组和列表非常接近,但是元组一旦创建,就再不能添加、删除或修改其中的元素了。元组是不可更改的,这一点与字符串性质相同。

    # 创建空元组
    t1 = ()
    
    # 直接创建元组
    t2 = (1, 2, 3, 4)
    
    # 从数组创建
    t3 = tuple([1, 2, 3, 4])     # (1, 2, 3, 4)
    
    # 从字符串创建
    t4 = tuple("谈笑风生")        # ('谈', '笑', '风', '生')
    
    #元组的真正关键字其实不是括号(()),而是逗号(,)。
    t4 = ('谈', '笑', '风', '生')    # 有括号
    
    t5 = '谈', '笑', '风', '生'      # 没括号
    
    #元组不可变,但元组内列表里的元素可变
    tu = (1, 2, 3, 4,[3, 7, 8, 9])
    print(tu)
    tu[4][3] = 2333
    print(tu)
    

    3 字典

    Python中的字典是由“键”,“值”对构成,在创建字典时需要注意的是:

    • 键必须是唯一并hashable的(如果键值是字符串,必须加引号);
    • 键与值之间用冒号隔开;
    • 多个键值对之间用逗号隔开;
    • 一个键对应多个值可存放在列表中;
    • 使用花括号把键值括起来;
    emp_dict = {}
    
    
    heros = {
             "batman":"Bruce Wayne",
             "superman":"Clark Kent"
    }
    heros["batman"]
    #访问字典中的元素须通过键。
    #如果该键不存在的话,解释器会返回KeyError。
    
    
    #heros["wonderwoman"] = "Diana Prince"
    #del heros["superman"]
    
    dict1 = {'name':'Sim'}
    dict2 = {'name':'Sim','gender':'Male','age':27,'address':'Jiangsu'}
    dict3 = {'name':'Sim','score':[67,90,72]}
    dict4 = {'name':['Sim','BaiSheng'],'score':[84,87]}
    dict5 = {'name':{'fstname':'Liu','lstname':'Sim'},'job':['teacher','data miner']}
    dict2['address']
    dict4['name'][1]
    dict5['name']['fstname']
    print(dict2['name'],"'s age is" ,dict2['age'],"!")
    print("%s's age is %d!" %(dict2['name'],dict2['age']))
    
    • clear  清空字典
    • copy  复制字典
    • get  返回指定键的值,但查不到时不会报错,返回None!
    • items  列表的形式返回可遍历的(键, 值) 元组数组
    • keys  列表的形式返回字典的键
    • values  以列表的方式,返回字典的值
      在字典中作为“键”的,必须是不可更改的数据类型。所以字符串、数值可以作为键,而列表和字典都不行。“值”可以是任何数据类型。

    用字典的方式完成下面一个小型的学生管理系统。

    1. 学生有下面几个属性:姓名,年龄,考试分数包括:语文,数学,英语得分。

    """
    比如定义2个同学:
    姓名:李明,年龄25,考试分数:语文80,数学75,英语85
    姓名:张强,年龄23,考试分数:语文75,数学82,英语78
    """

    1. 给学生添加一门python课程成绩,李明60分,张强:80分

    3)把张强的数学成绩由82分改成89分

    4)删除李明的年龄数据

    5)对张强同学的课程分数按照从低到高排序输出。

    student = {'lm':{'name':'liming',
                     'age':25,
        'score':{'yw':75}},
    'zq':{'name':'zhangqiang',
      'age':23,
      'score':[75,82,78]}}
    student['lm']['score']['python']=60
    student['zq']['score'].append(80)
    student['zq']['score'][1] = 89
    student['lm'].pop('age')
    student['zq']['score'].sort()
    

    相关文章

      网友评论

          本文标题:python从入门到入土教程(1)——入门课

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