0%

Python3 入门之基础语法

输入和输出

计算机程序都是需要进行输入,并将计算结果反馈输出。输入是 Input,输出是 Output,统称 Input/Output,简称 I/O。

输出

使用 print() 方法可以输出指定字符串到屏幕上

  • 括号中填入要输出的字符串即可
  • 该函数可以接受多个字符串,使用逗号 , 隔开,即可将字符串拼接成一串输出
  • 在拼接字符串的时候,使用空格替换 ,
  • 可以打印整数,进行数学计算

例子如下所示:

>>> print('This is','a example','for output method:','5+6 =',5+6)
This is a example for output method: 5+6 = 11

输入

使用 input() 可以让用户输入字符串,并存放到一个变量中

>>> name = input('please input your name: ')
please input your name: bashellwang
>>> print(name)
bashellwang

Python 基础

  • Python 使用缩进来组织代码块,每一行都是一个语句
  • 当语句以 : 结尾时,缩进的语句视为代码块
  • 一般使用 4 个空格的锁进,文本编辑器中需要设置把 Tab 自动转换为 4 个空格,确保不混用 Tab 和空格
  • Python 程序是大小写敏感的

数据类型和变量

整数

Python 可以处理任意大小的整数,包括负整数,没有大小限制

浮点数

浮点数没有大小写限制,但是超过一定范围就直接表示为 inf(无限大)。

字符串

以单引号 '" 括起来的文本。'" 本身是一种表示方式,如果想要显示它们,需要使用转义字符 \ 来标识。

转义字符可以转义很多字符,比如 \n 表示换行,\t 表示制表符,\\ 表示转义字符本身

>>> print('this is a \\n string ,\nthe result is string')
this is a \n string ,
the result is string
  • 如果有很多转义字符,就需要增加很多 \
  • 为了简化,Python 可以使用 r'' 表示 '' 内部的字符串默认不转义
  • Python 可以使用 '''...''' 格式来表示多行内容(命令行里显示为 ...,文本编辑器里则没有 ...
  • 多行字符串 '''...''' 还可以在前面加上 r 使用
>>> print('\\\t\\')
\    \
>>> print(r'\\\t\\')
\\\t\\
>>> print('''line1
... line2
... line3''')
line1
line2
line3
>>> print(r'''\\hello
... wold \\n''')
\\hello
wold \\n

布尔值

  • 布尔值与布尔代数的运算完全一样,布尔值只有 TrueFalse 两种(注意大小写)
  • 布尔值可以进行与、或、非等运算: and or not

空值

空值是 Python 中的一个特殊值,使用 None 表示,它不能理解为 0,因为 0 表示为整数。

变量

  • 变量和我们代数中理解的方程变量是一样的,在程序里变量可以是任意数据类型。
  • 变量使用变量名来表示,变量名必须是大小写英文、数字和下划线的组合,且不能以数字开头
  • = 是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量

这种变量本身类型不固定的语言称之为动态语言,与之对应的则是静态语言。静态语言在定义时必须指定变量类型,如果赋值时类型不匹配,则会报错。

可以把一个变量 a 赋值给另一个变量 b,这个操作实质上是把变量 b 指向变量 a 所指向的数据

>>> a='ABC'
>>> b=a
>>> a='xyz'
>>> print(b)
ABC

常量

所谓常量就是不能变的变量,在 Python 中,通常用全部大写的变量名表示常量。不过全部大写只是一种习惯写法,本质上它还是一个变量,如果你非要改变它的值,也是可以的。

  • / 除法计算,结果是浮点数,即使是两个整数整除
  • // 地板除,两个整数的除法为整数,就是结果取整
  • % 求余计算,结果为整数

list

list 是一种有序的集合,叫「列表」,它可以随时添加和删除其中的元素

  • 使用中括号 [] 来表示,如:list = ['Zhangsan','Lisi','Wangwu']
  • 用索引来访问,从 0 开始,list[0]
  • 索引越界时会报错 IndexError
  • list[-1] 可以直接获取最后一个元素,以此类推倒数第二个,第三个元素
  • 列表可以追加元素到末尾,list.append('abc')
  • 列表可以把元素插入到指定位置,list.insert(1,'abc')
  • 删除 list 末尾的元素,使用 pop() 方法
  • 删除指定位置元素,使用 pop(i) 方法
  • 替换某个元素,可以直接给它赋值对应的值
  • list 里面的元素的数据类型可以不一样,L = ['Apple',12,['apple',True]]

tuple

tuple 是另一种有序列表,叫「元组」,但是 tuple 一旦初始化,就不能修改

  • 使用小括号 () 来表示,在定义时,tuple 的元素必须被确定下来,如:tuple = ('Zhangsan','Lisi','Wangwu')
  • 定义一个空的 tuple,可以写成 t = ()
  • 定义一个只有一个元素的 tuple,必须是 t = (1,) ,元素后添加一个逗号表示
  • 获取元素与列表一样,tuple[0], tuple[-1] 等方式
  • 定义一个「可变」的 tuple
1
2
3
4
5
>>> t = ('a','b',['A','B'])
>>> t[2][0]='X'
>>> t[2][1]='Y'
>>> t
('a', 'b', ['X', 'Y'])

表面上看,tuple 的元素确实变了,但其实变的不是 tuple 的元素,而是 list 的元素。tuple 一开始指向的 list 并没有改成别的 list,所以,tuple 所谓的「不变」是说,tuple 的每个元素,指向永远不变。即指向 a,就不能改成指向 b,指向一个 list,就不能改成指向其他对象,但指向的这个 list 本身是可变的!

理解了「指向不变」后,要创建一个内容也不变的 tuple 怎么做?那就必须保证 tuple 的每一个元素本身也不能变。

dict

  • dict 全称 dictionary,名为字典,在其它语言中称为「map」,使用「键-值 (key-value)」形式存储
  • 使用大括号 {} 表示,如:dict = {'Zhangsan':18,'Lisi':20,'Wangwu':18}
  • 数据除了初始化时设置外,还可以通过 key 设置值
  • dict 的 key 必须是不可变对象
  • 获取值使用 dict[key] 方式
  • 多次设置值时,后面的赋值会将前面的覆盖掉
  • key 不存在时会报错,在获取值时可以先使用 in 来判断 key 是否存在
  • 通过 get 方法,如果 key 不存在,则返回 None 或指定值
  • 删除一个 key,使用 pop(key) 方法,对应 value 也会被删除
  • dict 内部存放顺序与 key 放入顺序无关,是无序的
  • 查找速度极快,占用内存空间高,即空间换时间

set

  • 和 dict 类似,也是一组 key 的集合,但不存储 value;无序,无重复 key
  • 创建一个 set,需要提供一个 list 作为输入集合,如:set = ([1,2,3]),表示 set 内部有三个元素
  • 重复元素在 set 中自动被过滤
  • 通过 add(key) 方法可以添加元素到 set 中,可重复添加,但是无效果
  • 通过 remove(key) 方法可以删除元素
  • set 可以看作数学意义上的无序和无重复元素集合,因此两个 set 可以做数学意义上的交集、并集等运算
  • 不可以放入可变对象
  • set 和 dict 唯一区别就是没有存储对应的 value

字符串和编码

字符编码可以看看这篇文章 字符编码

在最新的 Python 3 版本中,字符串是以 Unicode 编码的。如果要在网络上传输或者保存到磁盘上,需要把 str 变为以字节为单位的 bytes。Python 中对 bytes 类型的数据用带 b 前缀的单引号或双引号表示,每个 bytes 占用一个字节。

以 Unicode 表示的 str 通过 encode() 方法可以编码为指定的 bytes。纯英文的 str 可以用 ASCII 编码为 bytes,内容是一样的,含有中文的 str 可以用 UTF-8 编码为 bytes。含有中文的 str 无法用 ASCII 编码,因为中文编码的范围超过了 ASCII 编码的范围,Python 会报错。在 bytes 中,无法显示为 ASCII 字符的字节,用 \x## 表示。

反过来,从网络或磁盘上获取的字节流,读取的数据为 bytes,需要使用 decode() 方法转换为 str。

len() 函数计算的是字符串 str 的字符数或者 bytes 的字节数。

由于 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 编码

字符串的格式化

Python 中,采用与 C 语言一致的格式化方法,使用 % 实现

  • %s 字符串替换
  • %d 整数替换
  • %f 浮点数替换
  • %x 十六进制整数替换
  • %% 表示一个 %