目录
常量和表达式
C/Java中,整数除以整数结果还是整数,并且会把小数部分省掉
Python中,2/3=>0.6666,而不是0
编程中一般没有四舍五入原则,用的是浮点数IEEE754标准,在内存中表示浮点数的时候,可能会存在微小的误差
形如1+2称为表达式,表达式的结果称为 表达式的返回值,1 2 3这样的数字称为 字面值常量
分号:
Python中分号可有可无
若将多个语句写到同一行,必须加分号(不推荐)
变量
求方差:
变量用来保存中间结果,可以视为一块用来存储数据的空间,这个空间对应到“内存”这样的硬件设备上
变量命名
规则
由数字、字母、下划线组成,且数字不能放在开头
驼峰命名:
出了第一个单词的首字母之外,后续每个单词的首字母大写
personInfo
totalCount
蛇行命名:
单词之间使用下划线来进行分割
person_info
total_count
在公司里开发商业程序,一般都会有明确的商业规范
变量的类型
type(a)即可查看a的类型
Python中变量的类型,不需要在定义变量的时候显示声明,只是依靠初始化语句
不支持 int a=10这种形式,若非要定义类型可采用 a:int=10
整数int:
Python中的int能表示的数据范围为无穷大,可以根据数据的大小,自动扩容,因此Python中没有long、short、byte这些类型
浮点数(小数)float:
C++/Java中,float是四个字节(32个bit),也叫做“单精度浮点数”,表示的范围小精度低,因此存在double,且平时主要用的都是double
Python里的float就是双精度浮点数,等同C++/Java里的double
字符串string(str):
Python中使用英文的单引号或者双引号或者三引号 将一系列字符引用起来,构成字符串
有重复的时候可以单双引号同时使用
可以通过len(a)来求字符串长度
字符串之间的 + 意味着拼接操作 , 数之间的 + 意味着算术运算 , 不能把字符串和数字之间相加
字符类型:
Python中只有字符串类型,没有字符类型
'a'是长度为1的字符串
正因为Python中没有字符类型,所以'a'和"a"(单引号和双引号)都可以表示字符串
C++和Java有单独的字符类型
因此单引号表示字符
双引号表示字符串
布尔类型bool:
取值只有真和假 , 因此布尔类型主要用于逻辑判定、命题
真True 假False ( Python中首字母大写, Java和C++中小写)
如果把布尔类型的值和整数进行算术运算,此时会把True当做1,把False当做0,可以但是没意义
C/C++/Python可以
Java不支持整数和布尔混合运算
动态类型:
变量的类型可能会随着程序的运行发生改变,而不是随着编码而改变
Python里,声明的时候,写或不写类型没有影响
静态类型:
如C++、Java,声明类型后,变量的类型始终不变,如果尝试改变,编译阶段就会报错
类型的意义:
1、不同的类型占用的内存空间(字节)是不同的
int默认4个字节,但是当想表达的数超过四个字节的时候可以动态扩容
float固定8个字节
str是变长的
bool一个字节就够
2、不同的类型对应的操作也不同
注释
注释行:以#开头
文档字符串:两行'''或者"""包含在内,可以被Python解释器识别
批量注释:Ctrl + /
输出到控制台
控制台是一种人和计算机交互的最基础的方式
日常常用图形化界面进行交互,但是图形化界面的程序编写并不容易
直接打印:
print(a)
格式化字符串:
prin( f "a = " {a})
f-string,此处的f为format,这时就可以使用{ }这样的语法,往字符串里嵌入变量或者表达式
像格式化打印字符串,很多编程语言都进行了探索
C 采用printf,使用%d、%s这样的占位符
C++采用cout<<
Java采用字符串拼接,允许字符串和其他类型直接拼接
Python采用f-string
从控制台输入
input执行的时候会等待用户输入
input返回的是一个字符串str
如果不进行其他操作,只是拿到用户的输入,并打印,此时就按照str打印即可
如果要进行算术计算,就需要把读到的str转换成int,如果不转换就相加,则结果就只是简单地字符串拼接
类型转换可以使用a = int(a)
练习:输入三个小数,求平均值
运算符
算术运算符
0不能作为除数
整数除以整数,如果除不尽不会截断,得小数
**乘方/开方
//地板除法(取整除法),会对计算结果向下取整(取小的)
7//2=3
-7//2=-4
关系运算符
不仅可以比较数字,也可以比较字符串大小,这里采用字典序,先看首字母在字母表上的顺序,越靠前越小,比较得出大小结果,如果相等,继续比第二位
针对中文比较大小没有意义
联系人通讯录的排序方式,要使用第三方库才可以实现,Python不支持这样比较
字符串内容的确认比较:
C:strcmp,如果直接使用==,本质上是在比较两个字符串首元素地址
Java:equals,如果直接使用==,本质上是在比较两个字符串是否是同一个对象
以上两种是一个小众行为,大部分语言遵守的规则是类似于Python的
Python:直接使用==和!=来比较字符串内容相同
针对浮点数:
浮点数在内存中的存储和表示,是可能存在误差的,这样的误差在算数计算中可能会被放大,从而导致==误判
比较浮点数的方法:
作差:看差值是否小于预期的误差范围之内
Python中支持连续比较的写法,C或者Java都是不支持的
逻辑运算符
C++或者Java:
&& 逻辑与 并且
|| 逻辑或 或者
!逻辑非 逻辑取反
Python:
and 并且
or 或者
not 逻辑取反:位于表达式之前
短路求值:大部分编程语言都有
对于一个表达式来说,若左侧已经不满足条件后,右侧不继续求值
一旦右侧求值了,能看到代码出现异常
赋值运算符
链式赋值
a = b = c
可以但是不建议
多元赋值
a , b = 10 , 20
方便两个变量的值互换,不用使用tem
也可以完成一个函数返回多个值的操作
Python中不支持++、--这样的自增操作
前置没有报错是因为Python解释器当成了正负号
其他运算符
身份运算符:is,is not
成员运算符:in,not in
位运算符:&,|,~,^,<<,>>
语句
条件语句
没有switch
C++:
Python:
if 后的条件语句无括号,且用冒号作为结尾
多条件分支else if 改为elif
if/else命中条件后要执行的语句块,使用缩进而不是{ }
缩进和代码块
Python中缩进不能随意更改,分级缩进,多重条件嵌套
C++/Java没有硬性要求
练习
判断奇偶数:
如果代码为判断余数是否为1,则此代码在C++/Java中就会出现错误,因为负奇数计算出余数为-1,不是1,而在Python中是1
判断正负数:
判断闰平年:
空语句
错误:
应加一行空语句占位:
循环
while循环
练习:
for循环
for 循环变量 in 可迭代对象
循环体
range是一个内建函数,起到的效果就是得到一个“可迭代对象”,其中包含一些整数
range(beg , end)相当于[beg , end),是一个前闭后开区间
range第三个数据为步长,也就是差值,可以为负数
练习:
当前有个内建函数叫sum,自己定义的变量和内建函数冲突了,虽然不影响运行,但是代码后面就无法使用内建函数sum
使用shift+F6 修改代码,会自动把所有需要修改的名字都统一替换了
break和continue
continue:立即结束当前循环,进入下次循环,即跳过一次循环
break:立即结束整个循环