当前位置: 首页 > news >正文

常量和变量——“Python”

各位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 = 10b = 20a = bprint(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噢

 

相关文章:

常量和变量——“Python”

各位CSDN的uu们你们好呀,今天,小雅兰的内容是Python的一些基础语法噢,会讲解一些常量和变量的知识点,那么,现在就让我们进入Python的世界吧 常量和表达式 变量和类型 变量是什么 变量的语法 变量的类型 常量和表达式 …...

《蓝桥杯每日一题》KMP算法·AcWing 141. 周期

1.题目描述一个字符串的前缀是从第一个字符开始的连续若干个字符,例如 abaab 共有 55 个前缀,分别是 a,ab,aba,abaa,abaab。我们希望知道一个 N 位字符串 S 的前缀是否具有循环节。换言之,对于每…...

URL介绍

前言Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL(Uniform Resource Locator, 统一资源定位器)。它是www的统一资源定位标志,简单地说URL就是web地址,俗称“网址”。一、URL概念URL是对互联网上得到…...

学习 Python 之 Pygame 开发魂斗罗(一)

学习 Python 之 Pygame 开发魂斗罗(一)Pygame回忆Pygame1. 使用pygame创建窗口2. 设置窗口背景颜色3. 获取窗口中的事件4. 在窗口中展示图片(1). pygame中的直角坐标系(2). 展示图片(3). 给部分区域设置颜色5. 在窗口中显示文字6. 播放音乐7. 图片翻转与…...

ARM uboot 源码分析8 - uboot的环境变量

一、uboot 的环境变量基础 1、环境变量的作用 (1) 让我们可以不用修改 uboot 的源代码,而是通过修改环境变量,来影响 uboot 运行时的一些数据和特性。譬如说,通过修改 bootdelay 环境变量,就可以更改系统开机自动启动时倒数的秒…...

【蓝牙mesh】Network协议层介绍

【蓝牙mesh】Network协议层介绍 Network层简介 上一章节我们讲解了蓝牙Mesh中Lower层的功能和数据格式。 Lower层的数据往下传输就到了网络层(Network Layer)。网络层定义了收到Lower层的数据后,如何对其进行判断、封装、加密、认证&#xf…...

基于遗传算法的配电网故障定位(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...

Leetcode.1247 交换字符使得字符串相同

题目链接 Leetcode.1247 交换字符使得字符串相同 Rating : 1597 题目描述 有两个长度相同的字符串 s1和 s2,且它们其中 只含有 字符 "x"和 "y",你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时…...

python语音识别whisper

一、背景 最近想提取一些视频的字幕,语音文案,研究了一波 二、whisper语音识别 Whisper 是一种通用的语音识别模型。它在不同音频的大型数据集上进行训练,也是一个多任务模型,可以执行多语言语音识别以及语音翻译和语言识别。 …...

Prometheus -- 浅谈Exporter

Prometheus系统 – Exporter原理 为什么我们需要Exporter? 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本…...

如何确定RocketMQ中消费者的线程大小

背景 随着物联网行业的发展、智能设备数量越来越多,随着设备活跃量过大,常常存在一些高并发的请求,形成了流量尖峰,过多的请求会压垮服务器,影响其他服务运行。因此,为了保护云端服务,需要对请求…...

OpenAPI SDK组件之Spring Aop源码拓展

Spring Aop 看这个分享的应该都用过Spring Aop,这里就不再过多介绍了它是什么了。 我抽取了Spring Aop的部分源码,通过它实现请求参数可变拦截,同时apisdk离开Spring框架,仍然可以正常运行。 讲拦截也好,通知也罢&a…...

蓝桥杯C/C++VIP试题每日一练之龟兔赛跑预测

💛作者主页:静Yu 🧡简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者 💛社区地址:前端知识交流社区 🧡博主的个人博客:静Yu的个人博客…...

为你的Vue2.x老项目安装Vite发动机吧

天下苦webpack久矣,相信作为前端开发者一定经历过在项目迭代时间较长的时候经历漫长等待的这一过程,每一次保存都会浪费掉大量时间,这是webpack这种机制所带来的问题。 于是,尤大为我们带来了新一代前端构建工具:vite…...

ZCMU--5012: 铺设道路(差分思路)

Description 春春是一名道路工程师,负责铺设一条长度为 n 的道路。 铺设道路的主要工作是填平下陷的地表。 整段道路可以看作是 n 块首尾相连的区域,一开始,第 i 块区域下陷的深度为 di。  春春每天可以选择一段连续区间 [L,R]&…...

算法模板总结(自用)

算法模板总结滑动窗口双指针算法数组相关合并两个有序数组左右指针技巧快慢指针技巧字符串相关左右指针反转字符串问题快慢指针替换空格字符问题链表相关快慢双指针删除链表的倒数第N个节点链表相交环形链表链表操作几数之和两数之和四个数组的四数之和三数之和同一数组中四数之…...

【架构师】零基础到精通——架构发展

博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…...

C++(20):三路比较运算符

C20增加了三路比较运算符<>&#xff08;戏称航天飞机运算符&#xff09;&#xff0c;用于对类的比较运算符进行统一的设计。有两种使用方式&#xff1a;默认比较对于某些类&#xff0c;如果按照其成员逐一比较即可决定比较运算符的值&#xff0c;那么可以使用默认的三路运…...

MySQL workbench 字符集、字符序的概念与联系

在数据的存储上&#xff0c;MySQL提供了不同的字符集支持。而在数据的对比操作上&#xff0c;则提供了不同的字符序支持。 MySQL提供了不同级别的设置&#xff0c;包括server级、database级、table级、column级&#xff0c;可以提供非常精准的设置。 什么是字符集、字符序&am…...

DBA之路---数据库启动与关闭过程

DBA之路—数据库启动与关闭过程 1、启动过程 oracle启动的四个状态 shutdown、就是数据库关闭状态。 nomount模式 #启动instance &#xff0c;读取参数文件、分配sga空间启动后台进程&#xff0c;打开alter日志和其他trace文件startup nomount #该模式下只会创建实例并不加…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述&#xff08;300字左右&#xff09; 在数据库开发中&#xff0c;面对大量数据的处理任务时&#xff0c;单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”&#xff0c;深入探讨如何通过批量操作和游标技术提…...

比特币:固若金汤的数字堡垒与它的四道防线

第一道防线&#xff1a;机密信函——无法破解的哈希加密 将每一笔比特币交易比作一封在堡垒内部传递的机密信函。 解释“哈希”&#xff08;Hashing&#xff09;就是一种军事级的加密术&#xff08;SHA-256&#xff09;&#xff0c;能将信函内容&#xff08;交易细节&#xf…...

用 FFmpeg 实现 RTMP 推流直播

RTMP&#xff08;Real-Time Messaging Protocol&#xff09; 是直播行业中常用的传输协议。 一般来说&#xff0c;直播服务商会给你&#xff1a; ✅ 一个 RTMP 推流地址&#xff08;你推视频上去&#xff09; ✅ 一个 HLS 或 FLV 拉流地址&#xff08;观众观看用&#xff09;…...

java+webstock

maven依赖 <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.3.5</version></dependency><dependency><groupId>org.apache.tomcat.websocket</groupId&…...