----------- Mac Python 环境安装----------
- 打开Mac命令行软件
- 执行如下安装命令
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # 安装brew命令,若已安装,请忽略该步骤
$ brew install python
$ brew install pip
$ python -V # 查看python版本号
$ pip -V # 查看pip版本号
- pip配置(可使pip安装其他插件时,速度加快)
$ cd ~
$ mkdir .pip
$ vim .pip/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
- pip安装Jupiter
$ pip install jupyter # pip在安装jupyter的同时会安装ipython
- jupyter 打开方式
$ jupyter notebook # 会使用默认浏览器打开jupyter页面
----------- 冯诺伊曼体系架构 ----------
流控图
计算机五大部件
- 运算器
- 完成各种算数运算、逻辑运算、数据传输等数据加工处理
- 控制器
- 控制程序执行
- 存储器
- 用于记忆程序和数据,例:内存等
- 输入设备
- 将数据或者程序输入到计算机中,例:键盘、鼠标等
- 输出设备
- 将数据及程序的处理结果展示给用户,例:显示器、打印机等
------------------- Python基础 ------------------
类型
- python是强类型、动态语言
- 强类型:不同类型之间的操作,必须先强制类型转换
- 动态:不需要事先声明类型,随时可赋值为其他类型(缺点:编程时,难以推断类型)
Python解释器
- 官方CPython:C语言开发,即python
- IPython:交互式、功能增强的CPython
- PyPy:使用Python写的解释器,JIT技术,动态编译Python代码
- JPython:将Python的源代码编译成Java的字节码,运行在JVM上
- IronPython:与JPython类似,Python代码被编译成.Net字节码,运行在.Net平台上的解释器
Python常用数据类型
- 空值(None):空值不能用0表示
- 字符串(
str(x) 返回字符串
):
- 使用' "单双引号引用的字符序列(包括:数字、字母、标点符号等),单双引号内部若想使用单双引号本身,可以使用\进行转义,如:
>>> print('I\'m "ok"!')
I'm "ok"!
>>> print("I'm \"ok2\"")
I'm "ok2"
# 转义符可以转义很多字符,如:
\n 换行符
\t 制表符(Tab键)
\\ 表示字符\
在行尾输入\表示续行,如果使用各种括号,默认括号内是一个整体,内部跨行不使用\
- ''' """单三引号,可跨行、及在其中自由使用单双引号
- r前缀:在字符串前面加上r或R前缀,表示该字符串不做特殊处理
- f前缀:3.6版本新增,格式化字符串
- 数字:
- 整数(
int(x) 返回整数x
):
- 进制:
- 十六进制:0x10,hex()
- 八进制:0o10,oct()
- 二进制:0b10,bin()
- 浮点数(
float(x) 返回浮点数
):由整数和小数部分组成 - 复数(
complex(x) 返回复数
):由实数和虚数部分组成,实数和虚数部分都是浮点数3+4.2j - 布尔值(
bool(x) 返回布尔值
,注意大小写)可以和整数直接运算:
- True
1,为真
- False
0,为假
等价False的对象如下:
- 空容器(空字典dict、空列表list、空元组tuple、空集合set)
- 空字符串
- None对象
- 0
- 数字的处理函数
# round()四舍五入取偶
>>>: round(5.5), round(4.5), round(1.5)
(6, 4, 2)
# floor()向下取整,ceil()向上取整
>>> import math
>>> math.floor(5.6), math.floor(4.3), math.floor(1.8)
(5, 4, 1)
>>> math.ceil(5.6), math.ceil(4.3), math.ceil(1.8)
(6, 5, 2)
# int()取整数部分
>>> int(1.2), int(3.5), int(9.9)
(1, 3, 9)
# //整除且向下取整
>>> 3 // 2, 9 // 4, 10 // 3
(1, 2, 3)
>>> min(4,9) #取最小值
4
>>> max(4,9) # 取最大值
9
>>> pow(2,8) # 幂次方
256
>>> math.sqrt(4), math.sqrt(9) # 开方,即x ** 0.5
2.0, 3.0
>>> math.pi # π值
3.141592653589793
>>> math.e # 自如常数
2.718281828459045
# math模块中还有对等函数、三角函数等
- 类型判断
# type(obj),返回类型,而不是字符串
>>> type('abc'), type(11111), type('1111')
(str, int, str)
>>> type(1 + True)
int
>>> type(1 + True + 2.0)
float
# isinstance(obj,type),返回布尔值
>>> isinstance(6, str), isinstance(6, int)
(False, True)
Python基础语法
- 常量、字面常量、变量区别
- 常量:一旦赋值就不能改变,python中无常量定义(约定标识符使用大写字母表示)
- 字面常量:一个单独的量,如:11、"abc"、"2.323"等
- 变量:变量就是用来在程序运行期间存储各种需要临时保存可以不断改变的数据的标识符,也就是说,变量的值是可以被改变的
- 标识符(变量名)命名规则
- 只能由由字母、下划线和数字组成
- 只能以字母或下划线开头
- 不能与python关键字、系统函数和类名相同
- 约定:不允许使用中文、歧义单词(如:class_)、不要随便使用下划线开头
- 缩进:Python使用缩进的方式表示层次关系,约定使用4个空格进行缩进
Python运算符
- 算数运算符(a = 2, b = 8)
运算符 | 描述 | 示例 |
+ | 加法运算 | a + b = 10 |
- | 减法运算 | b - a = 6 |
* | 乘法运算 | a * b = 16 |
/ | 除法运算 | 5 / 2 = 2.5 |
// | 取整除 | 5 // 2 = 2 |
% | 取模(取余):只返回余数 | 5 % 2 = 1 |
** | 幂:x的y次幂 | 2 ** 8 = 256 |
- 位运算符
运算符 | 描述 |
& | 按位与 |
| | 按位或 |
^ | 异或:相异出1 |
<< 、 >> | 左移、右移 |
~ | 按位取反,包括符号位 |
- 比较运算符
运算符 | 描述 | 示例 |
== | 判断俩对象是否相等 | (2 == 2)返回True (2==3) 返回False |
!= | 判断俩对象是否不相等 | (2 != 3)返回True |
>、>= | 大于、大于等于 | (2 >= 3)返回False |
<、<= | 小于、小于等于 | (2 <= 3)返回True |
- 逻辑运算符
- 与或非 and or not
- 赋值运算符
运算符 | 描述 | 示例 |
= | 赋值,将=右边的值赋值给左边的变量名(标识符) | a = 123,即将123赋值给a |
+= | 自加赋值,将+=左边的值与+=右边的值相加,并将结果重新赋值给左边的变量名(标识符) | a += b 就相当于a = a + b |
-= | 自减赋值,将-=左边的值减去-=右边的值,并将计算结果重新赋值给左边的变量名(标识符) | a -= b 就相当于 a = a - b |
*=、//= 、%=、**= | 原理同自加赋值及自减赋值一样,将符号左边的值与右边的值进行运算后重新赋值给左边的变量名 |
- 成员运算符:in、not in
- 身份运算符: is、is not
运算符优先级
- 算数运算符 > 位运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
- 单目 > 双目
各种进制算法
- 转十进制
0b1110 # 二进制
(1 * 2 ** 3) + ( 1 * 2 ** 2) + (1 * 2 ** 1) + (0 * 2 ** 0) = 14
0x41 # 十六进制
(4 * 16) + (1 * 1) = 65
- 转二进制
0xF8 # 十六进制转二进制,按位展开即可
0b1111 1000
127 # 十进制转二进制,以127除以2,直到商为0,反向提取余数
0b1111111
- 转十六进制
0b1110 1000 # 二进制转十六进制,取四合一法(即每四位取成一位),
0xe8
127 # 十进制转十六进制,以127除以16,直到商为0,反向取余
0x7f
注:
十六进制从10开始用数字a|A表示,则:
a|A: 10
b|B: 11
c|C: 12
d|D: 13
e|E: 14
f|F: 15
----------- 原码、反码、补码、负数表示法 ----------
说明 | 示例 | |
原码 | 即数字二进制,可使用bin(n)查看数字n的原码 | 5 -> 0b101 -1 -> -0b1 |
反码 | 正数与原码相同,负数的反码符号位不变,其余按位取反 | -1 -> 1111 1110 |
补码 | 正数的补码与原码相同,负数的补码符号位不变,其余按位取反后+1 | -1 -> 1111 1111 |
负数表示法 | 负数在计算机中使用补码存储,CPU的运算起实现了加法器,但没有减法器,如5-1 = 5 + (-1)即0b101+0b11111111,溢出位舍弃 |