各位CSDN的uu们你们好呀,今天,小雅兰的内容是Python的一些基础语法噢,会讲解一些常量和变量的知识点,那么,现在就让我们进入Python的世界吧
常量和表达式
变量和类型
变量是什么
变量的语法
变量的类型
常量和表达式
我们可以把 Python 当成一个计算器, 来进行一些算术运算。
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)
注意:
- print 是一个 Python 内置的函数。
- 可以使用 + - * / ( ) 等运算符进行算术运算,先算乘除,后算加减。
- 运算符和数字之间,可以没有空格,也可以有多个空格。但是一般习惯上写一个空格(比较美观)。
- 在Python中,2/3等于0.666666,而不是0!!!
- 在C语言或者Java中,整数除以整数的结果还是整数,并且会把小数部分直接舍弃
print(1+2/3) 打印出来的结果是1.6666666666666665
667???
在编程中,一般没有“四舍五入”这样的规则
浮点数,IEEE 754标准中,这套规则下,在内存中表示浮点数的时候,可能会存微小的误差
IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式)。
IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,很少使用)与延伸双精确度(79比特以上,通常以80位实现)。只有32位模式有强制要求,其他都是选择性的。大部分编程语言都有提供IEEE浮点数格式与算术,但有些将其列为非必需的。例如,IEEE 754问世之前就有的C语言,有包括IEEE算术,但不算作强制要求(C语言的float通常是指IEEE单精确度,而double是指双精确度)。
该标准的全称为IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985),又称IEC 60559:1989,微处理器系统的二进制浮点数算术(本来的编号是IEC 559:1989)。后来还有“与基数无关的浮点数”的“IEEE 854-1987标准”,有规定基数为2跟10的状况。最新标准是“ISO/IEC/IEEE FDIS 60559:2010”。
- 形如 1 + 2 - 3 这样是算式, 在编程语言中称为表达式。
- 算式的运算结果, 称为表达式的返回值。
- 其中 1 , 2 , 3 这种称为字面值常量。
- + - * / 这种称为运算符或者操作符。
下面,我们来看一个题目:
给定四个分数, 67.5, 89.0, 12.9, 32.2 , 编写代码, 求这四个分数的平均数.
print( (67.5 + 89.0 + 12.9 + 32.2) / 4 )
变量和类型
变量是什么
当程序执行计算时,我们希望存储某些值,以便稍后可以使用这些值。在Python程序中,使用变量存储值。
定义变量
变量是计算机程序中的存储单元。每个变量都有一个名称并存有一个值。
使用赋值语句将值放入变量中。
cansPerPack=6
赋值语句的左侧是一个变量,右边是结果,为一个值的表达式。
赋值语句右侧的值存储在左侧的变量中。
第一次给变量赋值时,将使用该值创建和初始化该变量。变量定义后,可以在其他语句中使用。
例如:以下语句将打印存储在变量cansPerPaack中的值
print(cansPerPack)
如果一个现有变量被赋予一个新值,则该值将替换先前存储的值。
例如:以下语句将变量cansPerPack的值从6改变为8
cansPerPack=8
等号“=”并不意味着等式的左边等于右边,而是将右边的值赋给左边的变量。
下面,我们来看一个题目:
给定四个分数, 67.5, 89.0, 12.9, 32.2 , 编写代码, 求这四个分数的方差。
方差又是什么呢?
方差是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。
方差是衡量源数据和期望值相差的度量值。
- 计算平均值(此处的平均值,就会在后面反复地被使用)
- 针对每个数字,分别计算数字和平均值的差值,再平方
- 把上述的平均值相加
- 除以(项数-1)
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) ** 2
result = total / 3
print(result)
注意:
- avg, total, result 均为变量。
- ** 在 Python 中表示乘方运算. ** 2 即为求平方。
就像计算器中的 M 键功能类似, 通过变量就可以保存计算过程中的中间结果.
只不过, 计算器一般只能保存一个数据, 而在 Python 代码中, 可以创建任意多的变量, 来随心所欲的保存很多很多的数据.
变量可以视为是一块能够容纳数据的空间. 这个空间往往对应到 "内存" 这样的硬件设备上.
我们可以把内存想像成是一个宿舍楼, 这个宿舍楼上有很多的房间. 每个房间都可以存放数据.
衡量内存的一个重要指标就是内存空间的大小, 比如我的电脑内存是 16GB. 这个数字越大, 意味着 内存的存储空间就越大, 能够存放的数据(变量) 就越多.
变量的语法
(1) 定义变量
创建变量的语句非常简单, 其中a 为变量名.
当我们创建很多个变量的时候, 就可以用名字来进行区分。 = 为赋值运算符, 表示把 = 右侧的数据放到 = 左侧的空间中.
注意: 变量的名字要遵守一定规则.
硬性规则(务必遵守)
变量名由数字、字母、下划线构成,不能包含特殊字符。
像a1是合法的变量名
像1a,a*a都是非法的变量名
数字不能开头.
变量名不能和 "关键字" 重复.
关键字:在语法中有特定含义的单词
像if这种也是非法变量名
变量名大小写敏感,区分大小写。
num 和 Num 是两个不同的变量名.
软性规则(建议遵守)
给变量命名的时候,变量名使用有描述性的单词来表示,尽量通过名字表现出变量的作用。
一个变量名可以由多个单词构成,长一点没关系,但是含义要清晰,不怕变量名字长,就怕变量的含义表达得不清楚。
当我们使用一个单词描述不清楚的时候,可以使用多个单词来命名。
当变量名包含多个单词的时候,命名有多种规范。
1.驼峰命名法。形如 totalCount , personInfo 这种,除了首个单词外,剩余单词首字母大 写。
2.蛇形命名法。形如person_info、total_count这种,单词之间,使用下划线_来进行分 隔。
在公司里开发商业程序,一般公司都会有明确的编程规范。
数学上, 变量通常使用 x, y, z 这种简单的英文字母或者拉丁字母表示. 但是在编程中不建议这样使用.
原因是编程中, 一个程序里通常会同时创建出很多个变量. 如果只是使用单个字母表示, 在变量多了的时候, 就很难记住哪个变量是干啥的, 从而给维护程序带来了一定的困难. 因此我们更建议使用带 有明确描述性的名字, 来表示变量的用途.
(2) 使用变量
读取变量的值
a = 10
print(a)
修改变量的值
a = 20
print(a)
注意: 在 Python 中, 修改变量也是使用 = 运算, 看起来和定义变量没有明显区别.
当然, 也可以用一个变量的值赋给另外一个变量.
a = 10
b = 20
a = b
print(a)
print(b)
变量的类型
变量里面存储的不仅仅是数字, 还可以存储其它种类的数据. 为了区分不同种类的数据, 我们引入了 "类型"这样的概念.
(1) 整数
a = 10
print(type(a))
type 和 print 类似, 也是 python 内置的函数. 可以使用 type 来查看一个变量的类型.
Python中的变量的类型,不需要在定义变量的时候显式声明,而只是依靠初始化语句,根据初始化的值的类型来进行确定的。
在Python中,int能够表示的数据范围,是“无穷”的
Python的int是可以根据要表达的数据的大小,自动扩容
因此Python这里就没有long这样的类型了
像byte、short这些类型在Python中也不存在
Java int最大就能表示到-21亿~21亿
(2) 浮点数(小数)
a = 0.5
print(type(a))
像C++和Java里面,float是四个字节,也叫做“单精度浮点数”
把一个二进制位,称为一个bit
8个bit放在一起,就称为是一个字节
double是八个字节的,也叫做“双精度浮点数”
相比于单精度浮点数, 双精度浮点数占用的内存空间更多, 同时表示的数据精度更高即可(大概精确到小数点后 15 位).
Python中的float就是双精度浮点数,等同于C++/Java里的double
Python的一个设计哲学:解决一个问题,只提供一种方案
(3) 字符串
a = 'hello'
print(type(a))
a="hello"
print(type(a))
使用 ' ' 或者 " " 引起来的, 称为字符串. 可以用来表示文本.
英文字母、阿拉伯数字、标点符号、甚至汉字符号,都可以认为是“字符”。
例如:a 8 +
注意: 在 Python 中, 单引号构成的字符串和双引号构成的字符串, 没有区别. 'hello' 和 "hello" 是 完全等价的.
字符串这个单词——>string=>str
如果有这样一段话:My name is "yalan",如果把这段话作为字符串,那么该怎么办呢?
如果是这么写,编译器都看不下去了,所以:
应该这样写
因此,如果字符串里面包含了双引号,表示字符串就可以用单引号引起来
如果字符串里面包含了单引号,表示字符串就可以用双引号引起来
那么,如果同时有单引号和双引号,又该咋办呢?
Python中还有一种字符串,使用三引号表示
a='''my 'name' is "yalan" '''
print(a)
可以使用 len 函数来获取字符串的长度.
a = 'hello'
print(len(a))
可以使用 + 针对两个字符串进行拼接.
a = 'hello '
b = 'world'
print(a + b)
形如这样的代码,就是“字符串拼接”,也就是把后面的字符串拼接到前一个字符串的末尾,得到了一个更大的字符串!!!(对于原来的a、b是没有影响的)
此处是两个字符串相加. 不能拿字符串和整数/浮点数相加.
在Python中报错,有两种情况:
- 语法错误 在程序运行之前,Python解释器就能把错误识别出来
- 运行错误 在程序运行之前,识别不了的,必须要执行到对应的代码,才能发现问题
(4) 布尔
布尔类型是一个特殊的类型, 取值只有两种, True (真) 和 False (假),在后续进行逻辑判断的时候, 是非常有用的.
布尔类型也是数学上的一个概念. 我们初中就学过一个概念叫做 "命题" , 进一步的就可以判定命题的真假.
c1=True
c2=False
print(type(c1))
print(type(c2))
(5) 其他
除了上述类型之外, Python 中还有 list、tuple、dict、自定义类型等等
为什么要有这么多类型?
(1) 类型决定了数据在内存中占据多大空间.
(2) 类型其实约定了能对这个变量做什么样的操作.
类型系统其实是在对变量进行 "归类". 相同类型的变量(数据) 往往具有类似的特性和使用规则.
动态类型特性
程序运行过程中,变量的类型可能会发生变化。
a=10
print(type(a))
a='hello'
print(type(a))
a=True
print(type(a))
a的类型随着程序的运行,就发生改变。
静态类型:程序运行过程中,变量的类型始终不变
C++ Java
Java中的 int a=10; a这个变量在程序运行的整个过程中,始终都是int,如果尝试a="hello",编译阶段就会报警告。
一个编程语言,是否是动态类型,只是取决于运行时,类型是否发生变化,不取决于变量定义的时候是否声明类型。
Python作为一个动态类型的语言,在定义变量的时候,也是可以写类别的。
动态类型,写法是比较灵活的,提高了语言的表达能力,然而,在编程中,“灵活”这个词往往是“贬义”的,更容易出错!!!
相比之下,静态类型的语言还是更好一些的。尤其是在大型的程序中,多人协作开发。
好啦,小雅兰今天的内容就到这里啦,之后还会好好学python噢