开发环境:操作系统,编译器/解释器,运行环境,标准库+第三方库,集成开发环境
操作系统:计算机安装的操作系统,Windows,MacOS,Linux。
程序的本质:通过操作系统提供的可编程接口(API)拓展操作系统的功能。
运行环境:程序在不同操作系统下运行所需要的组件。
标准库+第三方库:可直接使用的功能套件。
集成开发环境(IDE):辅助编程的工具,涵盖了程序开发的编辑期,编译期(编译型语言),调试期。
编辑期:手敲源代码。编译期:源代码转移为计算机指令。调试期:执行程序调试。
开发环境:操作系统,编译器/解释器,运行环境,标准库+第三方库,集成开发环境
操作系统:计算机安装的操作系统,Windows,MacOS,Linux。
程序的本质:通过操作系统提供的可编程接口(API)拓展操作系统的功能。
运行环境:程序在不同操作系统下运行所需要的组件。
标准库+第三方库:可直接使用的功能套件。
集成开发环境(IDE):辅助编程的工具,涵盖了程序开发的编辑期,编译期(编译型语言),调试期。
编辑期:手敲源代码。编译期:源代码转移为计算机指令。调试期:执行程序调试。
看过C#入门再一起对比看Python入门,老师的课处处都是细节,处处都是知识点
空白,行,缩进
空白用于分隔token
常用的空白只有空格一种
按一下Tab相当于输入4个空格(可调)
做分隔之用时,多个连续空白相当于一个空白
行(line)是Python程序的基本单元
Python解释器按逻辑行来执行程序
一个逻辑行由一个或多个物理行构成
物理行可以显式地或者隐式地联合在一起
连续的、缩进相同的若干行构成一个组
Python语言是格式敏感语言
善用Ctrl+Alt+L"神器"
把空格改成圆点(Pycharm)
View----Active Editor----Show Whitespaces
等宽字体:
左右字体标点符号占的宽度都是一样的
几个空格和一个空格基本语义是一样的
如果又很多空格怎么办
CTRL+ALT+L 可以整理代码
如何引用物理行
反斜线
一个逻辑行是由一个或者多个物理行组成的
这叫显式联合
如果像字典 或者列表 可以不用做反斜杠
也可以 读完列表 完成执行
这叫 隐式联合
小知识点:
可以把多个逻辑行放到同一个物理行中只需要用分号隔开 ;
;不是表示一个逻辑行终结 是表示两个逻辑行分割
缩进
复合语句 会用到缩进
一组逻辑行 回当作一个段落来执行
有些问题完全符合标识符的规范或约定
但是不能用作标识符
Python 提前声明 部分单词被占用
不能用来用作标识符
被称为“保留字”
或者“关键字”
英文 “keywords”
所有KEYWORD
35个关键字
有的是单词是Class
有的单词是function
有的单词才是关键字
最好是在使用中凭使用习惯记住这些词
操作符
操作符的作用
就是和操作数一期组成表达式来求值
基本运算单位
无论多复杂的运算 最后都可以拆解成操作符的表达
有些操作符可以是单词 不一定非得是符号
c系列语言单独=可以是操作符
Python不是操作符 也不能构成表达式
只能赋值,分隔符
Python 语言的词法
很多时候为了让一个值有意义,我们位这个值取一个名字
这样可以更好的使用这个值
【identity】
例子中,用代数的方法把值赋予变量名(标识符)
L = 12
print(L)
del L
#变量是可以删除的!
Python 语言的标识符
对大小写是敏感的
S≠s
VB对大小写是不敏感的
不能用数字进行开头
如果字母开头后面接数字应该没问题
可以用中文作为变量(注意符号半角)
下划线可以用来标识符单词之间的空白
或者每个单词首字母大写
不能用空格这样PYTHON识别不了
StudentName 单词首字母大写
Studentname---首单词首字母大写 帕斯卡?
studentName--- 驼峰法
student_name--- 正确
student name---不正确
尽可能提高自己程序的可读性
名词尽量接变量
动词 或者动宾短语 定义函数
混淆器
改变程序的标识符,既可以执行程序,又保护了知识产权。
什么是词法?
判断符号(token)正确性得规则
对比词法、语法、语义
词法汇总
关键字(keyword)
标识符(identifier)与大小写规范
常值/字面值(literal)
操作符(operator)
分隔符(delimiter)
空白(whitespace)
代码行(line)与缩进(indentation)
注释(comment)
英文标点符号叫【半角】标点符号;
汉语标点符号叫【全角】标点符号。
词法、语法、语义
Literals---(字面值)
Literals are notations for constant values of some built-in types.
计算机世界中,一切皆“数字”
-整数是数字:可以用多种进制来表示
-浮点数是数字,有整数部分和小数部分
-字符是数字:对应这ASCII或Unicode码表
-色彩、声音、视频都是数字……
-内存地址是无符号整数
数据类型
-决定了内存中的数字是什么
-决定了值在内存中如何存储
-决定了值得取值范围
-决定了值都能进行哪些运算
Python 采用 Unicode
Unicode 前256个字符与 ASCII一样
换句话说前者兼具后者
ord()
char()
内存地址
相邻两个字节编号是连续得
访问内存地址就是为了读写内存
内存中得数据称为值 【value】
数据类型
如何知道数据想要表达什么
编程语言对数据得规定或者约束
Type
数据类型都对数字进行哪些规定和约束呢?
1.内存中具体的数字
2.在内存中如何存储,有的挨在一起,有的分散存储
3 .数据类型决定了数据的取值范围;布尔类型只有两个可进行运算的值。
4.数据类型决定值都能进行哪些运算。
常用的进制:
-二进制:binary---bin---0b/0B
-八进制:octal---oct---0o/0O
-十进制:decimal---dec
-十六进制:hexadecimal---hex---0x/0X
八进制、十六进制的特点:
-8、16都是2的整数次方
-八进制1位可折合为二进制的3位
-十六进制1位可折合为二进制的4位(常用)
-可以使值得书写记录更短,但仍然很好换算
程序猿们得’黑色幽默‘
-呆萌得程序员分不清“万圣节”喝“圣诞节”
oct 31=dec 25
莎士比亚是“穿越”了得程序员?
0x2b I ~0x2b (to be or not to be)
49-50
=-1
二进制VS十进制
能表示同样多的数
二进制比十进制讲进位快,数字长
计算机使用二进制,人类习惯十进制
二进制-十进制:1248法
十进制-二进制:取余法
把Python当计算器来用
常用的进制
二进制:Binary,bin
八进制:octal,oct
十进制:decimal,dec
十六进制:hexadecimal,hex
十进制转换二进制 用除二取余法
1字节 = 1Byte = 1B = 8b
看到了这个“0b101”
这个表达是个string 字符串
不是integer
bin(10)
-----'0b1010'
int('0b1010',2)
-----10
int('1010',2)
-----10
【在编程这条路走的很远
对代码出了问题 能够快速掌握问题的本质】
比特/字节/二进制
-什么是比特(bit)
-什么是字节(byte)
十进制 与 二进制的转换与运算
-二进制-十进制
-十进制-二进制
-二进制加法
-二进制求反、求负值
-二进制减法
一个比特能表达多少个数字?
一个比特能表示两个数字
同一个时间只能表示 两个数字中的一个
什么是字节?
如果一个字节是8个比特
7 6 5 4 3 2 1 0
为什么用 比特 组成 字节 再组成 字?
用二进制表示十进制
表示整数是2**n;
表示到的范围是2**n-1;
有符号整数的负数部分范围为2**(n-1);
有符号整数的正数部分范围为2**(n-1)-1;
但是能够表示的数据的范围仍然是2**n。
练习题
长度为4个字节的字,这个字能够表示多少个数字?如果我们拿这个字去表示无符号整数的话,那么这个无符号整数的范围是多少?如果去表示有符号整数的话,范围又是多少?
本节课课程大纲:
Python词法:
一、什么是词法
1)判断符号(token)正确性规则
2)对比词法、语法、语义
二、词法汇总
1)关键字(keyword)
2)标识符(identifier)与大小写规范
3)常值/字面值(literal)
4)操作符(operator)
5)分隔符(delimiter)
6)空白(whitespace)
7)代码行(line)与缩进(indentation)
8)注释(comment)
课程随笔:
1、学习词法,可以类比语文和英语的学习;汉字(单词),组词(英语短语),造句(英语句子),其中都有一定的规则;不同之处在于,编程语言极为精简,无二义性(自然语言表达方式很多,句子可长可短);所以,类比自然语言,编程就好比我们和计算机对话,叙述一件事(告诉计算机该做什么)
2、关于字面值的资料查询:
Literal, 在程序语言中,指表示某种数据值的符码。如,123 是整数值符码, 3.14 是浮点值符码,abcd 是字串值符码,True, False, 是逻辑值符码,等。 Literal 代表的是数据值的本身,区别于“变量”(Variable, 即容纳数据值的内存址)。最直观的理解是,碰到 literal, 你不会想到要往里面写东西;如:123 = "Hello, World!", 象变量 那样。换句话说,Literal 是一个常量(Constant)
1.高级语言( high - level ) : 更加贴近人类的自然语言... 而不是功能的高低
2.语法上 :脱糖 加糖
3.几乎所有的 编程语言 或者 设计模式 都在宣称,目标为:让程序员,专注业务逻辑,避开计算机底层交互。(群众基础)
4.专注的领域:软件工程( java ) 或者 数学计算 ( py )-- 算法导论 4 版
5.精确富有美感的知识善待学生,把他们引到上科研的道路
一、关于python变量使用前无须声明类型小记
1、C/C++/C#等语言的变量必须先声明类型,再使用;而python则不必声明,但变量得有初始值(python通过赋值给变量的初始值来“标明”变量类型),例如:integer=10 integer='123'(错误,因为integer变量只能存储整数——赋值的初始值为10,所以integer变量被“标明”为整形类型,就不能再存储其它类型的变)
2、python变量类型的确定,某种程度上和C#的var关键字声明变量相同,一旦变量被赋值了,那么该变量也就被“标明”为什么类型了,在C#中称var关键字实现的方式为类型推断
3、变量有基础的变量,也有高级的变量(比如C++/C#中的string类,MFC中的CString类),更准确的定义是基础变量类型,而不是变量(变量是对象,而基础变量类是类层面的语法),刚开始学C#时,后来突然意识到基础类型(诸如int,long,double等)也是类这个东东(因为其变量都支持ToString()等方法...)
二、本节课程要点
1、首先有用户需求(分解为业务逻辑),用编程语言实现出业务逻辑,就会得到一组代码,代码一般是放在文件里,保存代码的文件成为程序(源代码);用编写代码的方式来实现用户需求/业务逻辑,最后得到程序文件的这个过程就被称为编程
2、源代码(人类看懂的英语)-----》编译器/解释器-------》cpu指令(0和1);故而需要编译器和解释器,每个语言都有相应的编译器和解释器,语言是给人看的,而编译器/解释器作为“翻译官”让计算机按照我们想要的去执行
3、语言的分类(从其配套的“翻译官”来分类):编译型语言(C/C++/Java/C#),解释型语言(python/JavaScript);编译型语言:把源代码转译为指令,把指令保存在目标文件里,目标文件中的内容可以直接被计算机看懂,于是把保存指令的文件称为可执行程序(应用程序);解释型语言:不产生目标文件,程序执行时,把源代码提交给解释器,读一行源码,执行一条程序,直至源码执行完,所以有时也称脚本语言(类似于按剧本表演)
4、语言越贴近人类的语言,就越高级;从低到高级:机器语言------》汇编语言--------》面向过程的语言(C/SQL)-------》面向对象的语言(C++/C#/Java/JavaScript/python)
5、python语言不用像C++那样关注内存等释放,更加专注于业务逻辑,跨平台,主要是学习库及编程的体验上
6、python在数学、统计等强大,特别是机器学习等领域
7、语言所提供的数据结构(Java有数组),但python需要引入库
三、python编程
1、任何库类的引用都需要满足两点:物理上有库的存在,文件实现中要导入(通常是引用物理存储文件位置和类似于C#:using,python:import,C++:__declspec(dllimport),using,include等)
四、关于使用pandas库的数据处理
1、首先数据必须是较为“干净”
2、文件编码不同导致的失败
3、一些常用方法的使用