常量和变量——“Python”

news2024/11/19 1:27:52

各位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中报错,有两种情况:

  1. 语法错误 在程序运行之前,Python解释器就能把错误识别出来
  2. 运行错误 在程序运行之前,识别不了的,必须要执行到对应的代码,才能发现问题

(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噢

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/370261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go面向对象思想封装继承多态

go貌似都没有听说过继承,当然这个继承不像c中通过class类的方式去继承,还是通过struct的方式,所以go严格来说不是面向对象编程的语言,c和java才是,不过还是可以基于自身的一些的特性实现面向对象的功能,面向…

TCP 的演化史-byte stream 和 packet

不想写太多代码,我想直接抄一个 TCP sack 实现,参考了 lwIP TCP,很遗憾:TCP: Implement handling received SACKs 无奈不得不自己实现 sack option 的处理。由于 tso/gso/lro/gro,在软件层面难免遇到下面的情况&#…

Java 如何学习?这份5000页Java学习手册值得拥有,适合零基础自学也适合查漏补缺!

学习技巧 在以前大部分人学习都是先去找本书,先看看,再试,要是不懂了在去网上去查,再在继续啃着书本。但现在向书学习和在网上学习这掌握的效果是不同的,要学会用适合自己的学习方式。 目前的学习要是能看进去书本&a…

【5】linux命令每日分享——touch创建文件

大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的类UNIX操作系统,Linux的基本思想有两点:一切都是文件;每个文件都有确定的用途;linux涉及到IT行业的方方面面,在我们日常的学习中&…

飞桨 Tensor 介绍

Tensor 介绍 一、Tensor 的概念介绍 飞桨使用张量(Tensor) 来表示神经网络中传递的数据,Tensor 可以理解为多维数组,类似于 Numpy 数组(ndarray) 的概念。与 Numpy 数组相比,Tensor 除了支持运…

C语言 深度剖析数据在内存中的存储

目录数据类型详细介绍整形在内存中的存储:原码,反码,补码大小端字节序介绍及判断浮点型在内存中的存储解析数据类型详细介绍整形:1.为什么char类型也会归类到整形家族当中去呢?字符存储和表示的时候本质上使用的是ASCI…

【华为OD机试模拟题】用 C++ 实现 - 最大相连男生数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…

integrationobjects/OPC AE Client ActiveX Crack

使用 OPC AE 客户端 ActiveX 进行快速 OPC 警报和事件客户端编程! OPC AE Client ActiveX包括多个 OPC ActiveX 控件,可以轻松嵌入到最流行的 OLE 容器中。这允许用户与任何 OPC AE 服务器连接并实时检索警报和事件。 这种易于使用的 OPC AE ActiveX 简化…

论文笔记|固定效应的解释和使用

DeHaan E. Using and interpreting fixed effects models[J]. Available at SSRN 3699777, 2021. 虽然固定效应在金融经济学研究中无处不在,但许多研究人员对作用的了解有限。这篇论文解释了固定效应如何消除遗漏变量偏差并影响标准误差,并讨论了使用固…

【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C语言进阶 🎯长路漫漫浩浩,万事皆有期待 文章目录1.文件操作1.1 概述…

优思学院:《改变世界的机器・精益生产之道》是什么著作?

《改变世界的机器》(The Machine That Changed the World)是一本经典的商业管理书籍,由詹姆斯P温斯顿(James P. Womack)、丹尼尔T琼斯(Daniel T. Jones)和丹尼尔罗斯(Daniel Roos&am…

带组态物联网平台源码 代码开源可二次开发 web MQTT Modbus

物联网IOT平台开发辅助文档 技术栈:JAVA [ springmvc / spring / mybatis ] 、Mysql 、Html 、 Jquery 、css 使用协议和优势: TCP/IP、HTTP、MQTT 通讯协议 1.1系统简介 IOT通用物联网系统平台带组态,是一套面向通用型业务数据处理的系统…

Spring MVC 源码- HandlerAdapter 组件(五)之 HttpMessageConverter

HandlerAdapter 组件HandlerAdapter 组件,处理器的适配器。因为处理器 handler 的类型是 Object 类型,需要有一个调用者来实现 handler 是怎么被执行。Spring 中的处理器的实现多变,比如用户的处理器可以实现 Controller 接口或者 HttpReques…

数据结构预算法之买卖股票的最好时机(三)动态规划

目录:一.题目知识点:动态规划二.动态规划数组思路确定1.dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组一.题目知识点:动态规划动态规划算法的基本思想是:将待求解的问题分解成若干个相互联…

惠普m1136打印机驱动程序安装教程

惠普m113打印机是一款功能强大的多功能打印机,它能够打印、复印、扫描和传真等。如果你要使用这款打印机,你需要下载并安装驱动程序,以确保它能够在你的计算机上正常工作。在本文中,我们将介绍如何下载和安装惠普m1136打印机驱动程…

Python实现贝叶斯优化器(Bayes_opt)优化支持向量机回归模型(SVR算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景贝叶斯优化器 (BayesianOptimization) 是一种黑盒子优化器,用来寻找最优参数。贝叶斯优化器是…

【华为OD机试模拟题】用 C++ 实现 - 跳格子(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

sklearn学习-朴素贝叶斯(二)

文章目录一、概率类模型的评估指标1、布里尔分数Brier Score对数似然函数Log Loss二、calibration_curve:校准可靠性曲线三、多项式朴素贝叶斯以及其变化四、伯努利朴素贝叶斯五、改进多项式朴素贝叶斯:补集朴素贝叶斯ComplementNB六、文本分类案例TF-ID…

excel核对技巧:这么多数据对比的方法应该够用了

日常工作不时会需要对比数据,查找差异,查找重复值等。有的是对比同一工作表中的数据,有的是对比不同工作表之间的数据。希望接下来介绍的多种Excel数据对比方法,让大家能在不同情况下都能快速完成数据的对比。第一部分&#xff1a…

pytorch入门1--数据操作(张量)

一、张量的定义和变换 1.张量表示一个数值组成的数组,这个数组可能有多个维度。 说明,torch.arange(12)可以得到一个一维的(有几层中括号就是几维数组,注意是层,不是个数),一个最内层的一个中括…