输入和输出
计算机程序都是需要进行输入,并将计算结果反馈输出。输入是 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
布尔值
- 布尔值与布尔代数的运算完全一样,布尔值只有
True
和False
两种(注意大小写) - 布尔值可以进行与、或、非等运算:
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 | >>> t = ('a','b',['A','B']) |
表面上看,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
十六进制整数替换%%
表示一个%