Python从拿起到放下(入门篇)

本系列文章纯干货,无乱七八糟闲言碎语。

关键字

1
2
3
4
5
6
True 
Flase
None
is
not
del ......

表达式与运算符

表达式

  • 赋值语句
    变量 = 表达式

    1
    2
    3
    4
    5
    a = 2
    b = 1 + 1
    d = e = f = 100
    g, h, i = 1, 2, 3

  • is/is not表达式
    变量定义接上述代码

    1
    2
    3
    4
    print(a is b)
    print(d is e)
    print(b is d)

    结果:

    1
    2
    3
    True
    True
    False
  • id(x)
    获取某个变量的id

  • del
    删除变量 del a

比较运算符

< <= > >= == != 返回Bool类型

数值对象的构造函数

  • float(obj) 将字符串或者数字转换为浮点数。
    1
    2
    3
    b = 2
    fb = float(b)
    print(fb)
    输出:
    2.0
    其他类型转换:
  • int(x=0,base=0)
    如:int('101010111',2)表示将二进制的101010111字符串转换为10进制数字输出。
    若参数为空,则输出0,无法转换则报异常。
  • complex(r=0.0,i=0.0)
    用数字创建一个复数。
  • bool(x)
    创建一个bool类型的值。

内置函数

  • abs(x)
    取绝对值。
  • round(number,digits)
    四舍五入,其中digits为正数小数点右边取舍的位数,若为负数则小数点左边舍去的位数。
    如:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #注意
    print(round(4.4), round(4.5))
    print(round(4.4), round(4.51))

    print(round(4.14, 0), round(4.15, 0))
    print(round(4.14, 1), round(4.15, 1))
    print(round(4.14, 2), round(4.15, 2))

    #注意
    print(round(14.14, -1), round(114.15, -2))
    结果:
    1
    2
    3
    4
    5
    6
    4 4
    4 5
    4.0 4.0
    4.1 4.2
    4.14 4.15
    10.0 100.0
    注意:四舍五入,需要大于5才进位,等于5不进位。
  • power(x,y,z=None)
    等价于x**y或者x**y%z
  • help(函数名)
    查看函数的帮助文档。
    如:help(pow)
    1
    2
    3
    4
    5
    6
    7
    Help on built-in function pow in module builtins:

    pow(x, y, z=None, /)
    Equivalent to x**y (with two arguments) or x**y % z (with three arguments)

    Some types, such as ints, are able to use a more efficient algorithm when
    invoked using the three argument form.

语句

语句是python可执行的最小单位,可以独立执行。

换行

多条语句一行执行,需要以;隔开,通常一条语句一行,复合语句除外。

  • 折行符\换行
    \折行符反斜杠表示:告诉解析器,下一行的内容也是该行的内容。
  • 隐式换行
    所有括号的内容换行时候,解析器会自动去下一行找相应的内容,直到找到为止。

输入输出

  • 输入input
    其中,input中的提示语为可选。
    1
    2
    x = input("input something,and enter exit.\n")
    print(x+'\n')
    结果:
    1
    2
    3
    input something,and enter exit.
    asd
    asd
  • 输入print
    格式: print(value,...,sep='',end='')
    其中sep为分隔符,end为结束字符串,默认为\n

分支语句

  • if-elif…else语句

    自上而下判断,如果有一条语句为True,则结束分支执行,如果所有真值表达式都为False,则执行else中的语句。
    elif子语句可以有0、1、多个
    else语句可以有0、1个

    且if-elif…else语句可以嵌套

    如下:判断一个整数是正数、负数、还是0
    1
    2
    3
    4
    5
    6
    7
    num = int(input())
    if num > 0:
    print("正数")
    elif num < 0:
    print("负数")
    else:
    print("零")
    判断一个数字是偶数还是奇数
    1
    2
    3
    4
    5
    6
    # 判断一个数字是偶数还是奇数
    num2 = int(input())
    if num2 % 2 == 0:
    print("偶数")
    else:
    print("奇数")

pass语句

作用:通常用来填充语法空白。
如:将一个数字转换为它的绝对值。

1
2
3
4
5
6
num3 = int(input())
if num3 >=0:
pass
else:
num3 = -num3
print(num3)

如果我们不写pass填充语法空白,那么程序将会编译错误。

布尔运算

  • not
    not x,对x进行布尔取非,即先判断x的bool值,然后对取非
    如:
    1
    2
    3
    4
    5
    x = True
    y = 2
    z = 0
    print(x, y, z)
    print(not x, not y,not z)
    结果:
    1
    2
    True 2 0  
    False False True
  • and
    x and y,对x、y取与运算,从左到右判断,若遇到False,则返回False。如果都为True,则返回True。
    如:
    1
    2
    3
    4
    5
    6
    x = True
    y = False
    z = True
    print(x and y)
    print(x and z)
    print(y and z)
    结果:
    1
    2
    3
    False
    True
    False
  • or
    x or y,对x、y取或运算,从左到右判断,若遇到True,则返回True。如果都为False,则返回False。
    如:
    1
    2
    3
    4
    5
    6
    x = False
    y = True
    z = False
    print(x or y)
    print(x or z)
    print(y or z)
    结果:
    1
    2
    3
    True
    False
    True

正负号运算符

  • +
  • -

真值表达式赋值


如上图,该语句由三个子语句表达式构成,如果前面两个子语句成立,则返回第一个子语句,否则返回第三个子语句。

1
2
5
9

字符串

用单引号'、双引号"、三单引号'''、三双引号"""括起来的都是字符串,用来记录文本信息。

  • 空字符串表示

    1
    2
    3
    4
    ''
    ""
    ''''''
    """"""
  • 非空字符串表示

    1
    2
    3
    4
    'hello'
    "hello"
    '''hello'''
    """hello """
  • 单引号和双引号的作用(三单引号和三双引号同样适用)
    单引号内的双引号不算开始符、结束符
    双引号内的单引号也不算开始符、结束符
    二者均作为文本的一部分

    1
    2
    3
    4
    s1 = 'abcd"e"'
    s2 = "abcd'e'"
    print(s1)
    print(s2)

    结果:

    1
    2
    abcd"e" 7
    abcd'e' 7
  • 三双引号可以保留输入文本的原格式
    允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。实例如下:

    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/python3

    para_str = """这是一个多行字符串的实例
    多行字符串可以使用制表符
    TAB ( \t )。
    也可以使用换行符 [ \n ]。
    """
    print (para_str)

    以上实例执行结果为:

    1
    2
    3
    4
    5
    这是一个多行字符串的实例
    多行字符串可以使用制表符
    TAB ( )。
    也可以使用换行符 [
    ]。

    三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

  • 隐式字符串
    隐式字符串字面值会进行拼接,如:

    1
    2
    s = "1" '2' '''3''' """4"""
    print(s)

    结果:

    1
    1234
  • 转义字符\
    如:\'表示 一个单引号,其他的如下:

    转义字符 描述
    \(在行尾时) 续行符
    \\ 反斜杠符号
    \' 单引号
    \" 双引号
    \n 换行
    \a 响铃
    \b 退格(Backspace)
    \e 转义
    \000
    \0 字符串,值为0
    \n 换行
    \v 纵向制表符
    \t 横向制表符
    \r 回车
    \f 换页
    \oyy 八进制数,yy代表的字符,例如:\o12代表换行
    \xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
    \xXX XX为两位16进制字符
    \uXXXX Unicode16
    \UXXXXXXXX Unicode32
    \other 其它的字符以普通格式输出
  • 原生字符串raw
    \字符不进行转义,怎么显示,怎么输出。
    格式:r"字符串"

    1
    2
    3
    4
    s1 = "1\t234"
    print(s1)
    s2 = r"1\t234"
    print(s2)

    输出:

    1
    2
    1   234
    1\t234
  • 字符串拼接
    + 拼接
    += 拼接加
    *数字n 重复拼接n次
    *=

  • 字符串比较

    1
    2
    3
    4
    5
    6
    >
    >=
    <
    <=
    ==
    !=

    格式:
    x > y
    比较规则:

    1. 字符串x的第一个字母与y的第一个字母比较,如果不相同,则直接得出比较结果;如果相同,则再取第二个字母进行比较,以此类推。
    2. 比较的依据是字符的unicode编码值。
      如:
      1
      2
      3
      4
      print("a">"b")
      print("a">"A")
      print("abc">"ab")
      print("abc">"acb")
      结果:
      1
      2
      3
      4
      False
      True
      True
      False
  • in not in 运算符
    用于在字典、集合、序列等容器中,判断某个值是否存在。
    格式:对象 in 序列
    如:

    1
    2
    3
    print("a" in 'abc')
    print("a" in 'bcd')
    print('a' not in "abc")

    结果:

    1
    2
    3
    True
    False
    False
  • 字符串索引index
    python的字符串是不可以改变的字符序列。
    语法: 字符串[整数表达式]
    说明:

    python中的序列都可以用索引来访问其中的对象。
    正向索引下标从0开始,第二个是1,最后一个是len(s)-1
    反向索引下标从-1开始,-1代表最后一个,-2代表倒数第二个,第一个是-len(s)

    如:

    1
    2
    s = "hello world!"
    print(s[0], s[1], s[-1], s[-2], s[-len(s)], s[len(s) - 1], sep="\n")

    结果:

    1
    2
    3
    4
    5
    6
    h
    e
    !
    d
    h
    !

    注意:如果超出下标,则报下标越界异常。

  • 切片 slice
    从字符串序列中取出相应的元素,重新组成一个字符串序列。
    语法:字符串[开始索引:结束索引:(步长,可选)]
    说明:

    1. 开始切片是切片切下的位置,0代表第一个元素、1为第二个元素、-1代表最后一个元素,默认是第一个元素。
    2. 结束索引是切片的终止索引,但不包括终止点,默认是最后一个元素。
    3. 步长是切片每次获取完当前元素后向右移动索引的跨度,默认为1,步长为正数时,正向切片,步长为复数时,反向切片。

    如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    s = "hello world!"
    # 打印字符串1-最后一位
    print(s[1:len(s)])
    # 打印字符串0-最后一位
    print(s[0:len(s)])
    # 打印字符串0-最后一位,步长为2
    print(s[0:len(s):2])
    # 反向打印字符串,步长分别为1和2
    print(s[-1:-len(s) - 1:-1])
    print(s[-1:-len(s) - 1:-2])

    结果:

  • 返回序列的最值

    1. max(x)
    2. min(x)
  • 编码转换

    1. ord(c) 返回unicode
    2. chr(i) 返回i(0-65535)这个值对应的字符

    如:

    1
    2
    print(ord("浩"))
    print(chr(28009))

    结果:

    1
    2
    28009

  • 数字转换为字符串函数

    1. hex(i)
    2. oct(i)
    3. bin(i)
  • 表达式判断补充

    1
    2
    3
    4
    a = 3
    b = 1
    c = 2
    print(b < a > c)

    结果:Ture

  • 判断是否是回文字符串
    回文即对称的字符串,如122112321
    思路一:正向取字符串的前一半,然后反向取字符串的后一半,判断二者是否相等,如果相等,则为回文字符串。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    s = "上海自来水来自海上"
    i = 0
    # 偶数,取长度/2个字符串
    if (len(s) % 2) == 0:
    i = len(s) // 2
    # 奇数,取长度/2+1个字符串
    else:
    i = len(s) // 2 + 1
    s1 = s[0:i]
    s2 = s[-1:-i - 1:-1]
    print(s1, s2, sep="\n")
    print(s1 == s2)

    结果:

    1
    2
    3
    上海自来水
    上海自来水
    True

    思路二:将字符串反向输出,然后和原字符串比较,是否相等,如果相等则为回文字符串。

  • 字符串运算符整理
    下表实例变量 a 值为字符串 “Hello”,b 变量值为 “Python”:

    操作符 描述 实例
    + 字符串连接 >>>a + b
    'HelloPython'
    * 重复输出字符串 >>>a * 2
    'HelloHello'
    [] 通过索引获取字符串中字符 >>>a[1]
    'e'
    [:] 截取字符串中的一部分,左闭右开区间 >>>a[1:4]
    'ell'
    in 成员运算符-如果字符串中包含给定的字符返回True >>>"H" in a
    True
    not in 成员运算符-如果字符串中不包含给定的字符返回True >>>"M" not in a
    True
    r/R 原始字符串-原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 >>>print r'\n'
    \n
    >>> print R'\n'
    \n

    具体示例如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    a = "Hello"
    b = "Python"

    print("a + b 输出结果:", a + b)
    print("a * 2 输出结果:", a * 2)
    print("a[1] 输出结果:", a[1])
    print("a[1:4] 输出结果:", a[1:4])
    if "H" in a:
    print("H 在变量 a 中")
    else:
    print("H 不在变量 a 中")

    if "M" not in a:
    print("M 不在变量 a 中")
    else:
    print("M 在变量 a 中")

    print(r'\n')
    print(R'\n')

    以上程序执行结果为:

    1
    2
    3
    4
    5
    6
    7
    8
    a + b 输出结果: HelloPython
    a * 2 输出结果: HelloHello
    a[1] 输出结果: e
    a[1:4] 输出结果: ell
    H 在变量 a
    M 不在变量 a
    \n
    \n
  • 字符串格式化
    Python支持格式化字符串的输出。在Python中,字符串格式化使用与C语言函数一样的语法。
    如:

    1
    print("I am %s,and I am %d years old." % ("leehao", 23))

    输出结果为:

    1
    I am leehao,and I am 23 years old.

    python 字符串格式化符号:

    符 号 描述
    %c 格式化字符及其ASCII
    %s 格式化字符串
    %d 格式化整数
    %u 格式化无符号整型
    %o 格式化无符号八进制数
    %x 格式化无符号十六进制数
    %X 格式化无符号十六进制数(大写)
    %f 格式化浮点数字,可指定小数点后的精度
    %e 用科学计数法格式化浮点数
    %E 作用同%e,用科学计数法格式化浮点数
    %g %f%e的简写
    %G %F%E的简写
    %p 用十六进制数格式化变量的地址

    格式化操作符辅助指令:

    符号 功能
    * 定义宽度或者小数点精度
    - 用做左对齐
    + 在正数前面显示加号(+)
    <sp> 在正数前面显示空格
    # 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
    0 显示的数字前面填充'0'而不是默认的空格
    % '%%'输出一个单一的'%'
    (var) 映射变量(字典参数)
    m.n. m是显示的最小总宽度,n是小数点后的位数(如果可用的话)

    示例如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    # %c 格式化字符及其ASCII码 范围0~0x110000
    print("%c" % 0x55)
    # % s 格式化字符串
    print("i am %s" % "leehao")
    # % d 格式化整数
    print("i am %d years old." % 23)
    # % u 格式化无符号整型 2.7以后的版本%u同%d
    print("the number is %u ." % -23)
    # % o 格式化无符号八进制数
    print("the number %d is %o in 8th" % (23, 23))
    # % x 格式化无符号十六进制数
    print("the number %d is %x in 16th" % (23, 23))
    # % X 格式化无符号十六进制数(大写)
    print("the number %d is %X in 16th" % (23, 23))
    # % f 格式化浮点数字,可指定小数点后的精度,'.2'表示小数点后2位
    print("the number is %.2f " % 123.457)
    # % e 用科学计数法格式化浮点数,其中'.2'表示小数点后精度为2
    print("the number is %.2e " % 123.457)
    # % E 作用同 % e,用科学计数法格式化浮点数
    print("the number is %.3E " % 123.457)
    # % G、% g 。根据值的大小采用%e或%f,但最多保留6位有效数字
    print("the number is %g" % 2123.459987)
    # % p 用十六进制数格式化变量的地址 0x70

    上述程序运行结果如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    U
    i am leehao
    i am 23 years old.
    the number is -23 .
    the number 23 is 27 in 8th
    the number 23 is 17 in 16th
    the number 23 is 17 in 16th
    the number is 123.46
    the number is 1.23e+02
    the number is 1.235E+02
    the number is 2123.46
  • f-string
    f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
    f-string 格式话字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去。
    用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。
    在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果。
    如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    name = 'Runoob'
    s1 = f'Hello {name}'
    print(s1)

    s2 = f'{1 + 2}'
    print(s2)

    w = {'name': 'Runoob', 'url': 'www.runoob.com'}
    s3 = f'{w["name"]}:{w["url"]}'
    print(s3)

    x = 1
    print(f'{x+1}') # Python 3.6
    print(f'{x+1=}') # Python 3.8

    上述程序运行结果如下:

    1
    2
    3
    4
    5
    6
    Hello Runoob
    3
    Runoob:www.runoob.com
    2
    x+1=2


Python从拿起到放下(入门篇)
https://leehoward.cn/2019/11/24/Python从拿起到放下(入门篇)/
作者
lihao
发布于
2019年11月24日
许可协议