Python基础语法
Posted 小赵小赵福星高照~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础语法相关的知识,希望对你有一定的参考价值。
Python基础语法
文章目录
常量的表达式
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)
在python当中,2/3 = 0.6666666,而不是0,在C/C++以及java当中,整数除以整数结果还是整数!并且会把小数部分直接舍弃,那么为什么最后是5呢?按照四舍五入不应该是667吗?
编程中,一般没有"四舍五入"这样的规则,这样的小数一般称为浮点数,是由IEEE754标准,在内存中表示浮点数的时候,可能会存在微小的误差。
注意:形如 1 + 2 - 3称为表达式,这个表达式的运算结果,称为表达式的返回值
1 2 3 这样的数字称为字面值常量,+ - * /这些称为运算符。
示例:
给定四个分数,67.5,89.0,12.9,32.2,编写代码,求这四个分数的平均数
print((67.5 + 89.0 + 12.9 + 32.2) / 4)
变量和类型
变量是什么
有的时候,我们需要进行的计算可能更复杂一些,需要把一些计算的中间结果保存起来,这个时候就需要用到变量。
方差:
- 计算平均值(此处的平均值,会在后面反复的被使用)
- 针对每个数字,分别计算数字和平均值的差值,再平方
- 把上述的平均值相加
- 除以样本数量
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg)
result = total / 4
print(result)
**表示乘方
变量可以视为是一块用来存储数据的空间,变量是存储在内存上的。
我们可以把内存想像成是一个宿舍楼,这个宿舍楼上有很多的房间.每个房间都可以存放数据.
衡星内存的一个重要指标就是内存空间的大小比如我的电脑内存是16GB.这个数字越大,意味着内存的存储空间就越大,能够存放的数据(变量)就越多.
创建变量
a = 10
=表示赋值运算符,不是数学上的比较等于,就是将10放到a上去
变量命名的规则:
- 变量名必须由数字,字母,下划线组成,不能包含特殊符号
- 变量名不能以数字开头
- 变量名不能和Python的"关键字"重复
- 变量名是区分大小写的
建议命名规则:
- 命名时尽量使用描述性的单词来表示,尽量通过名字来表现出变量的作用
- 当我们使用一个单词描述不清楚的时候,可以使用多个单词来命名,当包含多个单词时,具有命名规范:
- 驼峰命名:除了第一个单词的首字母之后,后续每个单词的首字母都大写,例如:personInfo
- 蛇形命名:单词之间,使用下划线_来进行分割,例如:person_info
使用变量
读取变量的值
a = 10
print(a)
修改变量的值
a = 20
print(a)
在python中,修改变量也是使用 = 运算,看起来和定义变量没有明显区别
也可以用一个变量的值赋给另外一个变量
a = 10
b = 20
a = b
print(a)
print(b)
变量的类型
变量里面存储的不仅仅是数字,还可以存储其它种类的数据.为了区分不同种类的数据,我们引入了"类型"这样的概念。
注意:和C++/ Java等语言不同, Python变量的类型不需要显式指定,而是在赋值的时候确定的。
(1) 整数
a = 10
print(type(a))
# type函数可以用来检测类型
注意:type和 print类似,也是 python内置的函数.可以使用type来查看一个变量的类型。
注意:和C++ /Java等语言不同, Python的 int 类型变量,表示的数据范围是没有上限的.只要内存足够大,理论上就可以表示无限大小的数据。它可以根据表示的数据的大小,自动扩容,因此Python没有long、long long等类型
(2) 浮点数(小数)
a = 0.5
print(type(a))
注意:和C+/lava等语言不同, Python的小数只有float一种类型,没有double类型.但是实际上Python的float就相当于C++/ Java的double,表示双精度浮点数。 双精度浮点数相比于单精度浮点数,双精度浮点数占用的内存空间更多,同时表示的数据精度更高(大概精确到小数点后15位)。
Python的一个设计哲学:解决一个问题,只提供一种方案
(3) 字符串
把一个个字符放到一起就是字符串,什么是字符?像英文字母,阿拉伯数字,标点符号,汉字符号等都可以是字符。引号使用’或者"都是可以的
c = "hello"
print(type(c))
如果字符串里面包含了双引号,表示字符串就可以使用单引号引起来,如果字符串里面包含了单引号,表示字符串就可以使用双引号引起来,如果同时有单引号和双引号,咋办?
可以使用三引号引起来。
使用内置函数计算字符串的长度:
print(len(c));
字符串拼接:
a1 = "hello"
a2 = "world"
print(a1 + a2)
形如这样的代码就是字符串拼接,也就是把后面的字符串拼接到前一个字符串的末尾,对于原来的a1,a2是没有影响的。
在python中报错有两种情况:
- 语法错误,在程序运行之前,python解释器,就能把错误识别出来
- 运行错误,在程序运行之前,识别不了的,必须要执行到对应的代码,才能发现问题
(4) 布尔类型
布尔类型是—个特殊的类型,取值只有两种,True(真)和False(值)。
布尔类型也是数学上的一个概念.我们初中就学过一个概念叫做“命题",进一步的就可以判定命题的真假。
a = True
print(type(a))
b = False
print(type(b))
注意:python的真假首字母是大写。
(5) 其他
除了上述类型外,python中还有list,tuple,dict,自定义类型等等。
为什么要有这么多类型?
类型带来的意义:
- 不同的类型,占用的内存空间是不同的
int默认是4个字节,动态扩容
float固定8字节
bool一个字节
str是变长的
- 不同的类型,对应能够进行的操作也是不同的
int/float 可以进行±*/,不能使用len
str 可以+ 但是不能-*/,可以使用len
动态类型特性
程序在运行过程中,变量的类型可能会发生改变
a = 10
print(type(a))
a = 'hello'
print(type(a))
a = True
print(type(a))
静态类型:程序运行过程中,变量的类型始终不变,比如C++,Java
比如C++当中:int a = 10;a这个变量在程序运行的整个过程中,始终都是int,如果尝试a = “hello”,编译阶段就是报错。
一个编程语言,是否是动态类型,只是取决于运行时,类型是否发生改变,不取决于变量定义的时候是否声明类型!
Python作为一个动态类型的语言,在定义变量的时候,也是可以写类型的!
a:int = 10
动态类型写法比较灵活,提高了语言的表达能力,然而,在编程中,“灵活"这个词往往是"贬义”,更容易出错!!!
相比之下,静态类型的语言还是更好一些的,尤其是在一些大型的程序中,多人协作开发
注释
python当中有两种注释风格:
(1)注释行
使用#开头的行都是注释
#这是一行注释
(2)文档字符串
使用三引号引起来的称为"文档字符串",也可以视为是一种注释。
-
可以包含多行内容,
-
一般放在文件/函数/类的开头
""" 这是文档字符串工这是文档字符串 """
注释的规范:
-
内容准确:注释内容要和代码一致,匹配,并在代码修改时及时更新。
-
篇幅合理:注释既不应该太精简,也不应该长篇大论.
-
使用中文:一般中国公司都要求使用中文写注释,外企另当别论
-
积极向上:注释中不要包含负能量(例如领导SB等).
输入输出
和用户交互
程序需要和用户进行交互.
- 用户把信息传递给程序的过程,称为"输入"。
- 程序把结果展示给用户的过程,称为“输出""。
输入输出的最基本的方法就是控制台,用户通过控制台输入一些字符串,程序再通过控制台打印出一些字符串。
PyCharm运行程序,下方弹出的窗口就可以视为是控制台。
通过控制台输出
python使用print函数输出到控制台
print('hello')
不仅能输出一个字符串,还可以输出一个其他类型的变量
a = 10
print(a)
b = True
print(b)
tips:
如何批量注释代码:
- 选中要注释的代码
- 使用ctrl+/
我们希望使用print打印出"a = 10"这样的内容,也就是希望把数字和字符串混在一起打印
怎么打印呢?
print(f"a = a")
这个语法叫做"格式化字符串",使用f作为前缀的字符串,称为f-string,此处的f表示"format",此时就可以使用来嵌入变量或者表达式
通过控制台输入
python 使用input函数,从控制台读取用户的输入.
num = 0
num = input("请输入一个整数: ')
print(f'你输入的整数是num')
input执行的时候,就会等待用户输入。
注意:
- input的参数相当于一个"提示信息",也可以没有。
- input的返回值就是用户输入的内容,是字符串类型。
如果只是单纯的拿到用户的输入,进行打印,此时就按照str打印即可,如果需要进行运算则需要转为int。
a = input("请输入第一个整数:")
b = input("请输入第二个整数:")
print(f'a + b = a + b')
此处的结果是字符串拼接,不是算术运算.如果要想进行算术运算,需要先转换类型。
a = input("请输入第一个整数:")
b = input("请输入第二个整数:")
a = int(a)
b = int(b)
print(f'a + b = a + b")
如果想把整数转成字符串:str()
如果想把字符串转成浮点数:float()
例子:
# 输入四个小数,求四个小数的平均值
a = input("请输入第一个数字:")
b = input("请输入第一个数字:")
c = input("请输入第一个数字:")
d = input("请输入第一个数字:")
a = float(a)
b = float(b)
c = float(c)
d = float(d)
avg = (a + b + c + d) / 4
print(f"平均值是:avg")
运算符
运算符分为算术运算符、关系运算符、逻辑运算符、赋值运算符
算术运算符
+ - * / % ** //
规则:先算乘方,然后是乘除,最后算加减
注意:0不能作为除数,有些编程语言中,除整数0也是会抛出异常,除浮点数0会得到无穷大,而Python都认为是除0异常。
%是求余数,**进行乘方运算,也支持小数乘方,//是取整除法,会针对计算的结果进行"向下取整"
print(7 // 2)
关系运算符
比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False(假)。
关系运算符 | 说明 |
---|---|
> | 大于,如果> 前面的值大于后面的值,则返回 True,否则返回 False。 |
< | 小于,如果< 前面的值小于后面的值,则返回 True,否则返回 False。 |
== | 等于,如果== 两边的值相等,则返回 True,否则返回 False。 |
>= | 大于等于(等价于数学中的 ≥),如果>= 前面的值大于或者等于后面的值,则返回 True,否则返回 False。 |
<= | 小于等于(等价于数学中的 ≤),如果<= 前面的值小于或者等于后面的值,则返回 True,否则返回 False。 |
!= | 不等于(等价于数学中的 ≠),如果!= 两边的值不相等,则返回 True,否则返回 False。 |
is | 判断两个变量所引用的对象是否相同,如果相同则返回 True,否则返回 False。 |
is not | 判断两个变量所引用的对象是否不相同,如果不相同则返回 True,否则返回 False。 |
注意:关系运算符不光可以针对数字进行比较,还能够比较字符串,根据字典序比较。在C++和java当中不能使用== !=进行比较字符串是否相等,而在python当中是可以的。针对浮点数来说,使用==比较相等,存在一定的风险,因为浮点数在内存中的存储和表示,是可能存在误差的!这样的误差在进行算术运算的时候就可能被放大,从而导致==的判定出现误判。
print(0.1 + 0.2 == 0.3)
print(0.1)
print(0.2)
print(0.1 + 0.2)
print(0.3)
浮点数之间正确比较:
a = 0.1 + 0.2
b = 0.3
#这个代码是看a- b差是否是一个非常小的数字,是否在误差范围之内
print(-0.000001 < (a - b)< 0.000001)
这个代码是看a- b差是否是一个非常小的数字,是否在误差范围之内
逻辑运算符
and
并且,两侧操作数均为True,表达式的值为True,否则为False(一假则假)
or
或者,两侧操作数均为False,表达式的值为False,否则为True(一真则真)
not
逻辑取反,只有一个操作数,操作数为True,则返回False,否则返回True
例子:
a = 10
b = 20
c = 30
print(a < b and b < c)
print(a < b and b > c)
print(a > b and b < c)
print(a < b and b > c)
print(a < b and b > c)
print(not a < b)
print(not a > b)
对于and操作来说,如果左侧表达式为False,那么整体的值一定是False,右侧表达式不必求值!
对于or操作来说,如果左侧表达式为True,那么整体的值一定是True,右侧表达式不必求值!
赋值运算符
(1) = 的使用
= 表示赋值,这个我们已经用过很多次了,注意和==区分,=除了基本的用法之外,还可以同时针对多个变量进行赋值。
链式赋值
a = b = 10
多元赋值
a,b = 10,20
print(a)
print(b)
能解决一些特殊问题:完成两个变量交换
a,b = 10,20
a,b = b,a
print(a)
print(b)
(2) 复合赋值运算符
python还有一些复合赋值运算符,例如:+=,-=,*=,/=,%=。
其中a += 1等价于a = a + 1。其他复合赋值运算符也是同理。
python中不支持++ , --这样的自增自减操作的!!++和–的最大问题就是容易分不清前置和后置的区别,这一点python语法在设计的时候就进行了规避。
以上是关于Python基础语法的主要内容,如果未能解决你的问题,请参考以下文章