【Python】#2 基本数据类型

文章目录

  • 一、数字类型
    • 1. 整数类型
    • 2. 浮点数类型
      • tips:为什么浮点数计算的小数部分经常“错误”?如 为什么0.1+0.2==0.3在计算机中不为真
    • 3. 复数形式<class'complex'>
    • 4. 数字类型的操作符与部分函数
        • tips: 数字类型的类型提升
        • tips:Python中除法
      • 基本数据类型使用的小实验
  • 二、字符串类型
    • 1. 字符串序号与基本操作
    • 2. 字符串的一些常用格式操作
      • tips:Python字符串中每个字符都是Unicode编码字符
    • 3. 字符串的一些常用字符处理函数
    • 4. 字符串的格式化
    • 一些字符串操作的小实验
      • 回文数判断
      • 模拟一个进度条实现


一、数字类型

表示数字或数值的数据类型称为数字类型。
Python中提供了3种数字类型:

  • 整形
  • 浮点数
  • 复数

1. 整数类型

Python比较特别的一点在于:其可以处理任意大小的(负)整数,没有取值范围限制

整数的表达按习惯有四种进制

  • 十进制(default)
  • 16进制(以0x/0X作为前缀,如-0X89)
  • 8进制(以0o/0O作为前缀,如0o123)
  • 2进制(以0b/0B作为前缀,如0B101)

2. 浮点数类型

Python中浮点数指数学中带有小数点的数字,“浮”指的是小数点的位置可以浮动。

  • 十进制表示:有数字和小数点组成(小数点必须存在
  • 科学计数法表示:以字母e/E表示以10为底的指数,e/E之前为数字部分,之后为指数部分
    • 需要强调的是,科学计数法表示时,e/E前面必须有数字,后面必须是整数
      • eg:0.000012即1.2e-5;e-5、1.2e、1.2e-5.0的表示都是错误的

tips:为什么浮点数计算的小数部分经常“错误”?如 为什么0.1+0.2==0.3在计算机中不为真

另外由于二进制表示十进制小数存在无法准确表示的情况,如0.1转化为二进制:(图转自小林coding)在这里插入图片描述
可以看出0.1并不能使用二进制有限的位数进行存储,即其存储在内存中时就已经不是准确的0.1,而是为了存储而设置的一个近似值。同理像0.2等等之类的数存储的都是近似值。
由此,我们也不难理解为什么0.1+0.2在计算机中往往!=0.3
在这里插入图片描述
而关于浮点数在计算机中的存储方式,可以详见【计组】数据存储与计算(暂定)

3. 复数形式<class’complex’>

遵从数学中的复数定义 j2(J2)=-1;以a+bj/a+bJ形式的数字被称为复数,a为实部,b为虚部。

取x=a+bj,此时x为复数

  • real函数获取复数实部,如x.real ==a
  • image函数获取复数虚部,如 x.image==b

4. 数字类型的操作符与部分函数

操作符

运算符作用
+“加法,正号”
-“减法,负号”
*乘法
/除法
//求商
%求余数
**幂运算
+=、-=、*=、/=算术赋值
//=整除赋值
%=取模赋值
**=乘方赋值

部分运算函数

函数及使用功能
abs(x)绝对值,x的绝对值 abs(-10.01)结果为 10.01
divmod(x,y)商余,(x//y,x%y),同时输出商和余数 divymod(10,3)结果为(3,1)
pow(x, y[, z])幂余,(x**y)%z, […]表示参数z可省略 pow(3, pow3,99) 10000)结果为4587
round(x[, d])四舍五入,d是保留小数位数,默认值为0 round(-10.123, 2)结果为-10.12
max(x1,x2,x3…xn)最大值,返回最大值,n不限
min(x1,x2,x3…xn)最小值,返回最小值,n不限
tips: 数字类型的类型提升

当不同数字类型之间可以进行混合运算,运算后生成结果为最宽类型,整数—>浮点数—>复数

如 1+2.5=3.5;2+(4+1j)=6+1j;

当然也可对类型进行显示转换

函数描述
int(x)将x变成整数,舍弃小数部分 int(123.45)结果为123;int(""123"")结果为123
float(x)将x变成浮点数,增加小数部分 float(12)结果为12.0
complex(x)将x变成复数,增加虚数部分 complex(4)结果为4+0j

但是复数不可转换为int和float
在这里插入图片描述
在这里插入图片描述

tips:Python中除法

与传统的计算方式不同(如c/c++),python中运算符“/”可以在两个作用数都为整数时,结果输出浮点数;而“//”运算符功能则是与c/c++中的“/”效果相同
在这里插入图片描述


基本数据类型使用的小实验

计算一个三角形面积

x=eval(input("x="))
y=eval(input("y="))
z=eval(input("z="))
if (x+y>z and x+z>y and z+y>x):
    p=(x+z+y)/2
    S=(p*(p-x)*(p-y)*(p-z))**(0.5)
    print(S)

值得注意的是,input()函数返回的默认为字符串类型,需要转换为数字类型在此处使用。
在这里插入图片描述

二、字符串类型

字符串:由0个或多个字符组成的有序字符序列

  • 字符串由可以由一对单引号/双引号/三(单双)引号表示

    • 其中由单引号或双引号表示的,仅表示单行字符串
    • 由一对三单引号或三双引号表示,可表示多行字符串
    • 如果希望在字符串中包含双引号或单引号:
      ' 这里有个双引号(")'或者“这里有个单引号(')"
    • 如果希望在字符串中既包括单引号又包括双引号呢?
      '''这里既有单引号(')又有双引号(")'''
  • 字符串是字符的有序序列,可以对其中的字符进行索引
    “请”“请输入带有符号的温度值:”的第0个字符

1. 字符串序号与基本操作

python中字符串除了一般的正向序列,还存在反向序号(递减)。

需要注意的是,反向序列从末尾出发(下标为-1)直到字符串串头(下标为-length)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
那么该如何利用下标对字符串进行操作呢

  • 索引:返回字符串中单个字符
    <字符串>[index]
  • 切片:返回字符串中一段字符子串 <字符串>[head_index:tie_index[: 步长]]
    • 头下标和尾下标都是整数型数值,该子序列从索引头下标开始直到索引尾下标结束,但不包括尾下标位置
    • 头下标是可选项,省略时默认为0;
    • 尾下标是可选项,省略时默认为字符串长度;
    • 步长是可选项,省略时默认为1,步长为2时表示间隔一个位置来截取字符串。

值得一提的是

<字符串>[::-1]的形式可以直接将字符串反向输出(见后文回文数判断)


2. 字符串的一些常用格式操作

  • 转义字符\:用转义符可以在字符串中表达一些不可直接打印的信息,如

    • 字符串 "这里有个双引号(\")"的打印结果为 这里有个双引号(")
    • \b回退\n换行(光标移动到下行首)\r回车(光标移动到本行首)
    • 假如想将其作为普通字符打印出来,可以采用\\对转义字符进行转义,或者在字符串前面添加一个r或R,表示原始字符串
  • 一些功能函数

    • len(x):返回字符串x的长度
    • str(x):返回任意类型x所对应的字符串形式。如str(1.23)结果为"1.23" str([1,2])结果为"[1,2]"
    • hex(x) 或 oct(x)返回整数x的十六进制或八进制小写形式字符串。如hex(425)结果为"Ox1a9" oct(425)结果为"0o651"
    • chr(u) :u为Unicode编码,返回其对应的字符
    • ord (c):c为字符,返回其对应的Unicode编码
操作符及使用描述
x+y连接两个字符串x和y
n*str复制n次字符串str
x (not)in s如果x(不是)是s的子串,返回True,否则返回False

tips:Python字符串中每个字符都是Unicode编码字符


3. 字符串的一些常用字符处理函数

  • str.lower():返回字符串的副本,全部字符小写

  • str.upper():返回字符串的副本,全部字符大写

  • str.split(sep=None):返回一个列表,由str根据sep被分隔的部分组成如"A,B,C".split(",")结果为['A','B','C']

  • str.count(sub):返回子串sub在str中出现的次数

  • str.replace(old, new):返回字符串str副本,所有old子串被替换为new

  • str.center(widh[,fillchar]):字符串: str根据宽度width居中,fllchar可选 ,用于替换其他字符。如"python" .center(10,"=")结果为 "==python=="

  • str.strip(chars):从st中去掉在其左侧和右侧chars中列出的字符 如"= python= ".strip(" =np")打印结果为 “ytho”

  • str.join(iter):在iter变量中除最后元素外每个元素后增加一个str。如",".join("12345")结果为 "1,2,3,4,5"(主要用于字符串分隔等)

4. 字符串的格式化

字符串格式化使用.format()方法,
用法如下: <模板字符串>…format(<逗号分隔的参数>)

  • 占位符/槽:{ }
    如果不在槽内加序号在这里插入图片描述
    如果在槽内加序号
    在这里插入图片描述
    槽内部对格式化的配置方式(不常用)
    在这里插入图片描述

一些字符串操作的小实验

回文数判断

判断任意一个数是不是回文数

str=input("请输入数字:")
print(str)
print(str[::-1])
if(str==str[::-1]):
    print("是回文数")
else:
    print("不是回文数")

在这里插入图片描述

在这里插入图片描述

模拟一个进度条实现

在这里插入代码片

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电商控价的效果有哪些

品牌在做价格治理时&#xff0c;肯定是不再希望线上平台出现低价、窜货链接&#xff0c;但现实却难如品牌所愿&#xff0c;有几个难以实现的原因&#xff0c;首先&#xff0c;电商平台链接上架下架是很容易的&#xff0c;此刻将链接治理下架&#xff0c;下一刻店铺可能又会再上…

《QT实用小工具·二》图片文字转base64编码

1、概述 源码放在文章末尾 base64编码转换类 图片转base64字符串。base64字符串转图片。字符转base64字符串。base64字符串转字符。后期增加数据压缩。Qt6对base64编码转换进行了重写效率提升至少200%。 下面是demo演示&#xff1a; 项目部分代码如下所示&#xff1a; #ifn…

python pytz是什么

pytz模块常用于时区的转换&#xff0c;常常配合datetime一起使用。我们知道datetime除了data方法生成的时间是没有时区概念&#xff0c;其他如time、datetime等都是有时区概念&#xff0c;即指定了tzinfo信息。 >>> import datetime >>> datetime.datetime.n…

【机器学习】深入探讨基于实例的学习及K-最近邻算法

深入探讨基于实例的学习及K-最近邻算法 在机器学习的众多策略中&#xff0c;基于实例的学习方法因其简单性和高效性而备受关注。这种方法的核心理念在于利用已知的数据实例来预测新数据的标签或属性。本文将深入探讨其中的两个重要概念&#xff1a;最近邻算法和K-最近邻算法&a…

浏览器工作原理与实践--块级作用域:var缺陷以及为什么要引入let和const

在前面《07 | 变量提升&#xff1a;JavaScript代码是按顺序执行的吗&#xff1f;》这篇文章中&#xff0c;我们已经讲解了JavaScript中变量提升的相关内容&#xff0c;正是由于JavaScript存在变量提升这种特性&#xff0c;从而导致了很多与直觉不符的代码&#xff0c;这也是Jav…

考研数学|高效刷透汤家凤《1800》经验分享

当然不需要换老师&#xff0c;如果你在基础阶段连汤老师的课都听不进去&#xff0c;那么换其他老师的话&#xff0c;很大可能也是白搭。 如果你现在对于1800还是一筹莫展的话&#xff0c;那么很明显&#xff0c;这反映出前期基础不扎实&#xff0c;没有真正理解和掌握这部分内…

【NOI】树的初步认识

文章目录 前言一、树1.什么是树&#xff1f;2.树的基本概念3.树的基本术语3.1 节点3.1.1 根节点3.1.2 父节点、子节点3.1.3 兄弟节点、堂兄弟节点3.1.4 祖先节点、子孙节点3.1.5 叶子节点/终端节点3.1.6 分支节点/非终端节点 3.2 边3.3 度3.3.1 树的度 3.4 层次3.4.1 树的深度3…

学习JavaEE的日子 Day32 线程池

Day32 线程池 1.引入 一个线程完成一项任务所需时间为&#xff1a; 创建线程时间 - Time1线程中执行任务的时间 - Time2销毁线程时间 - Time3 2.为什么需要线程池(重要) 线程池技术正是关注如何缩短或调整Time1和Time3的时间&#xff0c;从而提高程序的性能。项目中可以把Time…

磐启微PAN1020低功耗SOC芯片

PAN1020低功耗蓝牙芯片 典型应用 ⚫ 电视和机顶盒遥控器 ⚫ 无线游戏手柄 ⚫ 无线鼠键 ⚫ 智能家居 需要此物料&#xff0c;可联系周小姐 主要特性 ⚫ RF - 2.4GHz 射频收发机&#xff08;兼容 BLE4.2&#xff09; - 接收灵敏度&#xff1a;-90 dBm1Mbps - 接收信号&a…

智慧公厕解决方案打造更加智能的卫生空间

一、智慧公厕方案概述 智慧公厕方案旨在解决现有公厕存在的诸多问题&#xff0c;包括民众用厕困难、环境卫生状况不佳、管理效率低下等方面。针对民众的需求和管理方面的挑战&#xff0c;智慧公厕提供了一套综合解决方案&#xff0c;包括智能导航、环境监测、资源管理等功能&a…

jvm(虚拟机)运行时数据区域介绍

Java虚拟机&#xff08;JVM&#xff09;运行时数据区域是Java程序在运行过程中使用的内存区域&#xff0c;它主要包括以下几个部分&#xff1a; 程序计数器&#xff08;Program Counter Register&#xff09;&#xff1a; 程序计数器是一块较小的内存区域&#xff0c;是线程私有…

25G SFP28 AOC线缆最新数据传输解决方案

在当今云计算、大数据、人工智能等领域&#xff0c;对高速数据传输的需求不断增加。传统的1G和10G网络已经无法满足数据中心日益增长的流量&#xff0c;因此迫切需要更高速的解决方案。25G SFP28 AOC有源光缆迎合了这一需求&#xff0c;成为连接数据中心、服务器、存储等25G设备…

RPA使用Native Messaging协议实现浏览器自动化

RPA 即机器人流程自动化&#xff0c;是一种利用软件机器人或人工智能来自动化业务流程中规则性、重复性任务的技术。RPA 技术可以模拟和执行人类在计算机上的交互操作&#xff0c;从而实现自动化处理数据、处理交易、触发通知等任务。帮助企业或个人实现业务流程的自动化和优化…

速通数据结构第二站 顺序表

文章目录 速通数据结构与算法系列 1 速通数据结构与算法第一站 复杂度 http://t.csdnimg.cn/sxEGF 感谢佬们支持&#xff01; 目录 系列文章目录 前言一、顺序表 0 结构体 1 接口声明 2 初始化和销毁 3 扩容函数 4 打印和判空 5 尾插 …

B2902A是德科技B2902A精密型电源

181/2461/8938产品概述&#xff1a; Agilent B2902A 精密源/测量单元 (SMU) 是一款 2 通道、紧凑且经济高效的台式 SMU&#xff0c;能够源和测量电压和电流。它用途广泛&#xff0c;可以轻松、高精度地执行 I/V&#xff08;电流与电压&#xff09;测量。4 象限源和测量功能的集…

RabbitMQ安装及使用笔记

RabbitMQ安装及使用笔记 RabbitMQ是一个开源的消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;&#xff0c;用于在分布式系统中进行消息传递。 1.安装 利用docker load命令加载mq镜像 docker load -i mq.tar 基于Docker来安装RabbitMQ&#xff…

【QT入门】 QListWidget各种常见用法详解之列表模式

往期回顾 【QT入门】 Qt代码创建布局之setLayout使用-CSDN博客 【QT入门】 Qt代码创建布局之多重布局变换与布局删除技巧-CSDN博客 【QT入门】 QTabWidget各种常见用法详解-CSDN博客 【QT入门】 QListWidget各种常见用法详解之列表模式 QListWidget有列表和图标两种显示模式&a…

Blenderproc渲染6D位姿估计数据集

https://github.com/DLR-RM/BlenderProc/tree/main/examples/datasets/bop_challenge 目录 1.3d渲染原理 2.步骤 3.代码 生成mask_all 4.难例渲染 物体高反光​编辑​编辑强弱灯光(明暗)​编辑​编辑​编辑物体xyz范围缩小 物体重复 干扰物&#xff08;自定义干扰物遮…

C#实现身份证格式验证(自建异常实现提醒)

基本信息 中国居民身份证的格式包括18位数字&#xff0c;这些数字分别代表不同的信息&#xff1a; 第1、2位数字表示省份代码。 第3、4位数字表示城市代码。 第5、6位数字表示区县代码。 第7至14位数字表示出生年、月、日&#xff08;其中7、8、9、10位是年&#xff0c;11、12…

整合SpringSecurity+JWT实现登录认证

一、关于 SpringSecurity 在 Spring Boot 出现之前&#xff0c;SpringSecurity 的使用场景是被另外一个安全管理框架 Shiro 牢牢霸占的&#xff0c;因为相对于 SpringSecurity 来说&#xff0c;SSM 中整合 Shiro 更加轻量级。Spring Boot 出现后&#xff0c;使这一情况情况大有…