
一、常量和表达式
我们可以把 Python 当成一个计算器,来进行一些算术运算。
可以使用 + - * / ( ) 等运算符进行算术运算。先算乘除,后算加减。
运算符和数字之间,可以没有空格,也可以有多个空格。但是一般习惯上写一个空格(比较美观)。
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)

表达式:1+2-3
表达式返回值:运算结果
字面值常量:1、2、3
**运算符或操作符:+ - * / (平方)

(1)熟悉 C / Java 的知道,2 / 3 结果为 0(小数部分被截断)。但是在 Python 中得到的结果则是一个小数,更符合日常使用的直觉。
(2)编程中没有'四舍五入'的规则,浮点数遵照 IEEE754 标准规则,会有微小误差。
二、变量和类型
2.1 变量的语法
有的时候,我们需要进行的计算可能更复杂一些,需要把一些计算的中间结果保存起来。这个时候就需要用到变量——可以被视为一块用来存储数据的盒子。
举例:

(1)定义变量
硬性规则 (务必遵守):
1、变量名由数字字母下划线构成。
2、数字不能开头。
3、变量名不能和 "关键字" 重复。
4、变量名大小写敏感。num 和 Num 是两个不同的变量名。
软性规则(建议遵守)
1、给变量命名的时候,尽量用描述性的单词来表示,尽量通过名字来表现出变量的作用。
2、当我们使用一个单词描述不清楚的时候,可以用多个单词来命名,不怕变量名字长,而怕变量的含义表达不清楚。
当包含多个单词时,命名有多种规范:
(1)驼峰命名——除了第一个单词的首字母外,后续每个单词的首字母都大写。
(2)蛇形命名——单词之间使用下划线_来进行分割。
——>至于选用哪一种,一般公司都会有明确的编程规范。
(2)使用变量

2.2 变量的类型

变量类型:对于不同的变量做区分
Python 中的变量的类型,不需要在定义变量的时候显式声明,而只是依靠初始化语句,根据初始化的值的类型来进行确定的。
(1)int
在 Python 中,int 能够表示的数据范围是'无穷'的。
——> int 可以根据表示数据的大小来自动扩容。
——> 因此 Python 里没有 long、short 这样的类型。
(2)float
Python 中的 float 就是双精度浮点数。
——> 等同于 C++/Java 里的 double。
(3)字符串
Python 要求使用引号把一系列字符引起来,就构成了字符串。
——> Python 并没有 char 这种类型,引用' '或者' '都是可以的。

问题 1:为什么' '和' '都可以,难道不是多次一举吗??
——> 其实他们组合在一起时可以起到划分的作用的!!如以下例子:


问题 2:字符串拼接问题

但是字符串和数字是不能这样拼接的!!

问题 3:Python 的报错情况
——>(1)语法错误,在程序运行之前,Python 解释器就能把错误识别出来。
(2)运行错误,在程序运行之前,识别不了,必须要执行到对应的代码中才能发现问题。
(4)布尔类型
布尔类型是一个特殊的类型,取值只有两种,True(真)和 False(假)。
PS: 布尔类型也是数学上的一个概念。我们初中就学过一个概念叫做'命题',进一步的就可以判定命题的真假。

(5)其他
除了上述类型之外,Python 中还有 list, tuple, dict, 自定义类型等等。
2.3 类型的意义
1、不同的类型,占用内存空间是不同的
int 默认是 4 个字节,但是会动态扩容。
float 固定 8 个字节。
bool 是 1 个字节。
string 是变长的。
2、不同的类型,对应能够进行的操作也是不同的
int、float ——> 可以 + - * / 但是不能用 len。
str ——> 可以 + 和使用 len 但不可以 - * /。
2.4 动态类型
1、静态类型:程序运行过程中,变量的类型适中不变
比如 C++ 和 Java 创建变量的类型是一开始就决定好的。

2、动态类型:程序运行过程中,变量的类型可能会发生改变

其实 py 作为一个动态类型的语言,在定义变量的时候也是可以写类型的!!

但是一个编程语言是否是动态类型,只是取决于进行时他的类型是否发生改变,并不取决于变量定义的时候是否声明类型!!——>所以这里的声明并不影响他的特性,但是声明类型可以增加可读性。
3、动态类型写法比较灵活,提高了语言的表达能力,但是在编程中,'灵活'这个词往往是贬义词,因为这代表更容易出错,尤其是在大型程序的多人协作开发中(比如 a 提供的代码难以被 b 理解)。
因此很多公司,在创业之初喜欢用 Python 来做开发(因为产品规模小,只需要一两个程序员就可以完成),但是当项目达到一定规模之后,动态类型的劣势就逐渐体现出来了,很多公司会针对之前 Python 写的代码使用其他语言进行重构!!
三、注释
3.1 什么是注释
写代码是一件烧脑的事情,但是读代码也同样非常烧脑,所以注释作为一种特殊的代码,在不会影响到程序执行的同时还能够起到解释说明的作用,帮助程序员理解代码运行的逻辑!!
一般来说,开头的注释一般是写在要注释的代码的上方,也有少数情况下要写在注释代码的右侧,很少会写在代码的下方,更不会写到代码的左侧!!
3.2 注释的语法
Python 中有两种风格的注释。
(1)注释行 ——> 使用#开头的行都是注释。
# 这是一行注释.
(2) 文档字符串 ——> 使用三引号('''或''')引起来。
""" 这是文档字符串 这是文档字符串 """
特点:
一般放在函数、文件、类的开头。
可以包含多行内容。
和#的区别是可以被 Python 解释器识别,就可以方便通过其他工具来看到文档字符串的内容。
3.3 注释的规范
1、注释的内容,必须是准确的,起到误导作用的注释还不如不写!!
2、公司中的项目经常要进行'迭代',一旦需要更新代码,也务必要记得更新注释!!
3、篇幅合理,既不要太精简,也不要长篇大论
4、使用中文,但是一些外企可能会要求英文
5、内容要积极向上,不能有负能量!(早年虾米音乐的'穷逼 vip')
3.4 如何批量注释代码?
1、选中要注释的代码。
2、ctrl+ /
四、输入输出交互
4.1 控制台
程序需要和用户进行交互。
用户把信息传递给程序的过程,称为'输入'。
程序把结果展示给用户的过程,称为'输出'。
输入输出的最基本的方法就是控制台(人与计算机交互的最基础方式)
这些对于机械的操作面板,就叫做控制台,控制台上会有一些按钮,开关,操作杆……
后来又了计算机之后,控制台的概念也就延续下来了……
只不过计算机是通过键盘鼠标等进行操作,把操作结果显示到屏幕上……
——>计算机里,就把用户能输入命令向计算机安排工作,计算机再把结果显示出来,这样的程序就被称为控制台!!

——>但是在日常生活中却不常用,更常见的交互方式是图形化界面(如我们平时用到的 QQ, 浏览器,steam 等,都不需要用户输入命令,而只是通过鼠标点击窗口点击按钮的方式来操作。)
4.2 输出 print
Python 使用 print 函数输出到控制台。不仅能输出一个字符串,还可以输出一个其他类型的变量。

更多的时候,我们希望能够输出的内容是混合了字符串和变量的。



4.3 输入 input
python 使用 input 函数,从控制台读取用户的输入

五、运算符
5.1 算数运算符
像 + - * / % ** // 这种进行算术运算的运算符,称为 算术运算符。
1、除法的第一个问题:除 0 错误

这种运行时出现的错误也叫做'抛出异常'。
如果程序运行中抛出异常,程序直接就终止了,异常的代码后面也不会执行。

2、除法的第二个问题:截断
整数除以整数,如果除不尽得到的会是小数,不会出现截断的情况。

// 是取整除法,会'向下取整'。

5.2 关系运算符
像 < >= == != 这一系列的运算符称为 关系运算符,它们是在比较操作数之间的关系。

运算符不光可以比较数字,还可以根据字典序比较字符串!!

C 和 Java 不用==和!=比较字符串(小众)。

浮点数用==可能存在风险。


思考:这种误差难道真的不会造成影响吗??
——>理论会影响,但是工程角度基本可以忽略不计!!

5.3 逻辑运算符
像 and or not 这一系列的运算符称为 逻辑运算符。
and 并且。两侧操作数均为 True,最终结果为 True。否则为 False。(一假则假)
or 或者。两侧操作数均为 False,最终结果为 False。否则为 True。(一真则真)
not 逻辑取反。操作数本身为 True,则返回 False。本身为 False,则返回 True。
Python 支持连续>和<

短路求值

5.4 赋值运算符
赋值,左侧必须是变量,右侧必须是数据 ——>相当于把右侧的数据填充到左侧的空间中。

链式赋值(不推荐)

多元赋值(少用,但可以不创建第三个变量的情况下交换变量,因为赋值是同时进行的)

5.5 复合赋值运算符
Python 还有一些 复合赋值运算符。例如 += -= *= /= %=。


5.6 其他...
除了上述之外,Python 中还有一些运算符,比如 身份运算符 (is, is not), 成员运算符 (in, not in), 位运算符 (& | ~ ^ >) 等。
六、扩展






