Python基础

作者: 咸鱼有梦想呀 | 来源:发表于2018-09-17 18:16 被阅读20次

    行和缩进
    python的代码块不用{}控制类。而是用缩进来写模块。
    缩进的空白数量是可变的,一般缩进4个空格。但是所有代码块必须包含相同的缩进空白数量。

    行和缩进

    没有严格缩进就会报错!!

    错误示范

    python空行
    函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

    空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

    记住:空行也是程序代码的一部分。


    Python标识符
    标识符由字母,数字,下划线组成。但不能以数字开头。并且区分大小写。

    python可以在同一行显示多条语句,只要用;隔开就好了。

    一行显示多条语句

    下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。


    关键字

    通常用全部大写的变量名表示常量.
    变量名必须是大小写英文、数字和_的组合,且不能用数字开头


    python注释
    单行注释以#号开头
    多行注释使用三个单引号'''或三个双引号"""


    python能直接处理的数据类型

    • 整性
      任意大小的整数,包括负整数。也可用十六进制表示、

    • 浮点数
      也就是小数。浮点数可以用数学写法也可以用科学计数法。eg:1.2324,-2.564
      对于很大或者很小的浮点数,就必须要用科学记数法表示,把10用e代替。1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5

    • 字符串
      字符串是以单引号'或双引号"括起来的任意文本,eg:'abc',"xyz"等等。字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。
      如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识

    'I\'m \"OK\"!'
    
    效果图
    转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\
    转义字符
    如果转移的字符太多,可以用r''表示''内部的字符串默认不转义
    转义字符
    如果字符串内部有很多需要换行的地方,可以用'''...'''的格式表示多行内容
    换行

    python对单个字符的编码

    ord()
    获取字符的整数表示

    获取字符的整数表示

    chr()
    把编码转换为对应的字符

    把编码转换为对应的字符

    len()
    计算str的字符数
    如果换成bytes,len()函数就计算字节数

    计算字符数
    • 布尔值
      布尔值只有TrueFalse两种值,要么是True,要么是False。在python中可以直接用TrueFalse表示布尔值

    • 空值
      空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

    • 常量
      常量就是不能变的变量
      python有两种除法一种是/,另一种是//称为地板除
      /除法计算结果是浮点数

      /法

    地板除永远是整数,即使除不尽也只会截取整数部分。


    地板除

    还有一个余数运算,可以得到两个整数相除的余数


    计算余数
    • 变量
      在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
      变量名必须是大小写英文、数字和_的组合,且不能用数字开头。

    变量在计算机内存中的表示:

    a='abc'
    

    Python解释器干了两件事情:
    1.内存中创建了一个'abc'的字符串;
    2.在内存中创建了一个名为a的变量,并把它指向'abc'。


    编码
    因为python的源文件也是一个文本文件,所以当源代码包含中文的时候,在保存源代码时,就要保存成utf-8编码。当python解析器读取源代码时,为了让它按照utf-8编码读取,通常在开头写

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    

    第一行注释时告诉linux/OS X系统,这是一个python可执行程序,Windows系统会忽略这个注释。
    第二行注释是为了告诉python解释器,按照utf-8编码读取源代码,否则,在源代码中写的中文输出可能会乱码。
    申明了UTF-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码

    设置编码

    格式化
    最后一个常见的问题是如何输出格式化的字符串。我们经常会输出类似亲爱的xxx你好!你xx月的话费是xx,余额是xx之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。

    在python中,采用格式化的方式和C一样,用%实现
    常见的占位符:

    常见的占位符 占位符运用

    如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串
    有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%

    占位符

    format()
    传入的参数依次替换字符串内的占位符{0}、{1}……

    format方法格式化

    list
    python内置的一种数据类型
    list是一种有序的集合,可以随时添加和删除其中的元素。
    eg:

    classmates = ['Michael', 'Bob', 'Tracy']
    
    存放学生姓名

    计算list的长度

    计算list的长度

    访问list中每个位置的元素,从0开始索引

    索引元素

    索引超出范围,就会报IndexError错误。
    你可以用len(classmates)-1确定最后一个元素的索引。
    如果要用最后一个元素,可以直接classmates[-1]直接获取最后一个元素。
    以此类推,也可以获取倒数第二个,第三个元素……

    往list中增加元素

    • 往list中末尾追加元素
    classmates.append('Adam')
    
    list末尾追加元素
    • 往指定位置增加元素
    classmates.insert(1,'LELE')
    
    指定位置添加元素

    删除元素

    • 删除list末尾的元素
    classmates.pop()
    
    删除末尾元素
    • 删除指定位置元素
    classmates.pop(i)
    
    删除指定位置元素

    替换元素

    • 直接赋值给对应的索引位置
    classmates[0] = 'lele'
    
    替换元素 替换的元素是一个list

    元素排序
    sort()函数

    排序

    tuple
    这是一个有序列表——元祖。

    classmates = ('Michael', 'Bob', 'Tracy')
    
    元祖

    一旦初始化就不可以修改
    你可以索引元素,但不能删除,添加,赋值。
    因为tuple不能变,所以代码更安全。

    list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。


    条件判断
    Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

    Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。

    if语句的形式

    if 判断条件:
        执行语句……
    else:
        执行语句……
    

    eg:

    age = 3
    if age >= 18:
        print('your age is', age)
        print('adult')
    else:
        print('your age is', age)
        print('teenager')
    

    当判断的条件为多个值的时候,可以用:

    if 判断条件1:
        执行语句1……
    elif 判断条件2:
        执行语句2……
    elif 判断条件3:
        执行语句3……
    else:
        执行语句4……
    

    eg:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    h = input('input your height:')
    w = input('input your weight:')
    height = float(h)
    weight = float(w)
    bmi = weight / (height * height)
    if bmi < 18.5:
        print('过轻')
    elif bmi > 18.5 and bmi < 25:
        print('正常')
    elif bmi > 25 and bmi < 28:
        print('过重')
    elif bmi > 28 and bmi < 32:
        print('肥胖')
    else:
        print('严重肥胖')
    
    运行结果

    循环语句

    • for循环
      在给定的判断条件为true时执行循环体,否则退出循环体。
      语法:
    for iterating_var in sequence: 
       statements(s)
    

    eg:打印1-9三角形阵列

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    for i in range(1,11):
        for k in range(1,i):
            print k,
        print "\n"
    

    运行结果:

    1 
    
    1 2 
    
    1 2 3 
    
    1 2 3 4 
    
    1 2 3 4 5 
    
    1 2 3 4 5 6 
    
    1 2 3 4 5 6 7 
    
    1 2 3 4 5 6 7 8 
    
    1 2 3 4 5 6 7 8 9 
    

    eg:

    sum = 0
    for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
        sum = sum + x
    print(sum)
    

    计算1-100的和:
    range()函数

    sum = 0
    for x in range(101):
        sum = sum + x
    print(sum)
    
    • while循环
      重复执行语句
    while 判断条件:
        执行语句……
    

    执行语句可以是单个语句或语句块。

    while循环

    eg:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import random
    while 1:
        s = int(random.randint(1, 3))
        if s == 1:
            ind = "石头"
        elif s == 2:
            ind = "剪子"
        elif s == 3:
            ind = "布"
        m = raw_input('输入 石头、剪子、布,输入"end"结束游戏:')
        blist = ['石头', "剪子", "布"]
        if (m not in blist) and (m != 'end'):
            print "输入错误,请重新输入!"
        elif (m not in blist) and (m == 'end'):
            print "\n游戏退出中..."
            break
        elif m == ind :
            print "电脑出了: " + ind + ",平局!"
        elif (m == '石头' and ind =='剪子') or (m == '剪子' and ind =='布') or (m == '布' and ind =='石头'):
            print "电脑出了: " + ind +",你赢了!"
        elif (m == '石头' and ind =='布') or (m == '剪子' and ind =='石头') or (m == '布' and ind =='剪子'):
            print "电脑出了: " + ind +",你输了!"
    

    运行结果

    输入 石头、剪子、布,输入"end"结束游戏:石头
    电脑出了: 石头,平局!
    输入 石头、剪子、布,输入"end"结束游戏:石头
    电脑出了: 剪子,你赢了!
    输入 石头、剪子、布,输入"end"结束游戏:


    循环控制语句

    • break语句
      在语句块执行过程中终止循环,并且跳出整个循环。
      break语句用在while和for循环中。
      eg:
    n = 1
    while n <= 100:
        if n > 10: # 当n = 11时,条件满足,执行break语句
            break # break语句会结束当前循环
        print(n)
        n = n + 1
    print('END')
    
    • continue语句
      在语句块执行过程中终止当前循环,跳过当前的这次循环,直接开始下一次循环。
      eg:
    n = 0
    while n < 10:
        n = n + 1
        if n % 2 == 0: # 如果n是偶数,执行continue语句
            continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
        print(n)
    
    • pass语句
      空语句,为了保持程序结构的完整性。

    python内置字典

    • dict
      使用键-值(key-value)存储,具有极快的查找速度。
    dict用法

    把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

    将值放入dict

    由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉。
    如果key不存在,dict就会报错

    可以用in判断key是否存在

    判断key是否存在

    也可以通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value

    判断key是否存在

    返回None的时候Python的交互环境不显示结果。

    要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

    删除key

    dictkey必须是不可变对象。

    • set
      setdict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key
      要创建一个set,需要提供一个list作为输入集合
    创建set

    重复元素在set中自动被过滤:

    过滤重复元素

    通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:

    向set中添加元素

    通过remove(key)方法可以删除元素:

    删除元素

    set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作

    set应用

    相关文章

      网友评论

        本文标题:Python基础

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