python基本数据类型——整型,浮点型,复数,字符串

2023-11-17

由于也是初学python,所以在这里简要介绍一下python基础的数据类型,好在宏观上有个把握。

整数类型

python里面的整数类型可正可负,不像其他的语言,python的整数并没有取值范围的限制。如:pow(x,y)函数用来计算x的y次方。
整数类型的4种表示形式:
+++++十进制:1010,99,-217
+++++二进制:0b或0B开头,如 0b101,-0B110
+++++八进制:0o或0O开头,如 0o123,-0O345
+++++十六进制:以0x或0X开头,如 0x9a,-0x89

浮点数类型

浮点数的取值范围和小数精度都存在限制,但常规计算中可忽略这种限制。
取值范围数量级约-10^308到 10^308,精度数量级10^-16。

不确定尾数

浮点数间的运算存在不确定尾数,这不是bug,不确定尾数在很多编程语言都存在。
也就是当某个浮点数并不能被2进制精确表示的时候,就会出现不确定尾数。什么叫精确表示呢?
因为十进制数和二进制数之间不存在一一映射的关系,所以某些十进制数是不能被二进制精确表示的,而只能近似表示,这样就造成了计算的二进制结果是十进制结果的一个近似数。如0.1表示为二进制的数时,是无限的,可以无限接近0.1但不等于0.1。不确定尾数出现在10^(-16)

0.1+0.2
0.30000000000000004

那语句 0.1+0.2 ==0.3呢? 判断为False
此时可以使用round(x[,d])对x四舍五入,d是小数保留的位数。默认取整,[,d]表示可有可无。

>>> (0.1+0.2)==0.3
False
>>> round(0.2+0.1,1)==0.3
True

浮点数与科学计数法

浮点数可以使用科学计数法表示。
aeb 表示a*10^b

>>> 1.234e2
123.4

复数类型

表示为a+bj
z.real,获得实部
z.imag,获得虚部
3种数据类型的可以看成逐渐扩展的关系。
整数 —》浮点数—》复数,提到这个的主要原因是,不同类型的数据进行运算时,遵循向上提升的规则。这样不会造成数据的丢失。
一个小例子来直观的感受一下:

>>> z = 3+4j
>>> z.imag
4.0
>>> z.real
3.0
>>> 

运算操作符

+,-,,/,//表示整除,%取模,*幂运算。3^2 在python中表示为3**2或者用pow(3,2)。

字符串

字符串的表示

字符串既可以(1)使用2个”符号括起来表示,形式上就是:”<你要表达的字符串>”,也可以(2)使用2个’符号括起来表示,形式上就是:
‘<你要表达的字符串>’,前面2中表示方法是用来表示单行字符串的;还可以(3)使用2个”’符号括起来表示,形式上就是:”’<你要表达的字符串>”’,值得注意的该表示可以用来表达多行字符串。而表示形式(1)(2)只能表示单行字符串。
之所以有(1)(2)这2种表达单行字符串的,是因为在字符串中包含另一种引号时会比较方便。

>>> str ="woyou ge ' "
>>> print(str)
woyou ge '

索引和切片

索引可以用来访问字符串的某一个元素:如 str[2]即代表访问str的第3个元素;python中数组的下标都是从0开始的。
切片用来截取字符串的某一段元素:如 str_name[1:4],访问str的第2个到第4个元素,即str[1],str[2],str[3]3个元素,但并不包括下标4对应的元素。这是需要注意的。

>>> str='123456'
>>> type(str)
<type 'str'>
>>> str[1:4]
'234'
>>> 

字符串切片的高级用法

[M:N:K]根据步长对字符串切片,
M,N分别表示切片的起点和终点(不包括终点所对应的元素),M缺失表示至开头,N缺失表示至结尾,K表示步长,即隔几个元素取一个元素。
str_name[::-1]逆序字符串str_name
当然如果我想取字符串从第3个元素到最后的片段,那么可以使用str_name[2:],就行了。

字符串处理函数1


len(str_name):返回字符串的长度
str(x): 将任何数据类型的x都转换为字符串
hex(x): 整数x转为十六进制
oct(x): 整数x转为八进制
chr(u): u为unicode编码,返回其对应的字符
ord(x):返回x对应的Unicode编码


小例子:显示12个星座对应的字符

这里介绍一个小例子来体会一下,其中通过在print函数中指定end属性值为end=”“可以使得for循环的输出都在同一行显示。

for i in range(12):
    print(chr(9800+i),end="")

字符串处理方法

这些都是以方法形式提供的字符串处理功能。
这里写图片描述
这里写图片描述
这里写图片描述

字符串格式化

str_name.format()
槽用‘{}’来表示,表示为format中的参数占位。
如果没有在槽中明确指定该槽放置哪个序号的参数,就按照序号顺序依次填充。换句话说,就是第一个槽对应显示第一个参数,第二个槽对应显示第二个参数,以此类推。用图表示为如下:
这里写图片描述
但是如果明确指出了槽内对应的参数编号,那么就按照指定的序号来格式化显示字符串。
这里写图片描述

槽内部对字符串格式化

这里写图片描述
如上面所展示的,如果要对某个槽进行格式化,那么可以在“:”后面添加格式控制标记。“:”前面若不指定参数序号则按默认的来对应参数。
那“:”后面究竟能够指定哪些格式化参数呢?
这里写图片描述
需要注意的是,这些格式化参数如果有是需要按照上图的顺序依次填写的,否则就会报错。

>>> "{:=^20}".format("python")
'=======python======='
>>> "{:=20^}".format("python")
ValueError: Unknown format code '^' for object of type 'str'

这里再贴出几个例子,以便深刻地理解。
这里写图片描述

python练习程序

练习1

有一个问题:如下描述,
A 每天都进步1%。
B 工作5天,周末休息,休息时会退步1%,那么工作日需要进步多少才能和达到和A一样的进步?

#daydayup.py
# 计算工作5天休息2天总的进步
def dayUp(df):
    dayup = 1
    for i in range(365):
        if i % 7 in [0,6]:
            dayup = dayup *(1-0.01)
        else:
            dayup = dayup *(1+df)
    return dayup
#计算连续工作365天的进步
dayup_a = 1.0
dayup_a = (dayup_a+0.01)**365
# 37.78
print("dayup_a is :",dayup_a)

dayfactor = 0.01
while dayUp(dayfactor) < dayup_a:
    dayfactor += 0.001
print("工作日应该达到的目标为: ".format(dayfactor))

练习2

这里显示一个如图所示的字符串,要求每隔1s显示一行。
这里写图片描述

import time

print("start".center(20,'-'))
scale = 10
for i in range(scale+1):
    m = '*' * i
    n = '.' * (scale-i)
    ratio = (i/scale)*100
    print("{:^3.0f}%[{}->{}]".format(ratio,m,n))
    time.sleep(1)
print("end".center(20,'-'))
~                              

练习3

针对练习2的改进,使得字符串刷新以后还能在同一行显示,看起来就像是覆盖了之前在屏幕该行的内容。
这里写图片描述

import time

print("start".center(20,'-'))
scale = 10
for i in range(scale+1):
    m = '*' * i
    n = '.' * (scale-i)
    ratio = (i/scale)*100
    print("\r{:^3.0f}%[{}->{}]".format(ratio,m,n) , end="")
    time.sleep(1)
print('\n')
print("end".center(20,'-'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python基本数据类型——整型,浮点型,复数,字符串 的相关文章

随机推荐

  • 力扣 --- 45. 跳跃游戏II

    45 跳跃游戏II 2020 05 04 22 58 题目描述 给定一个非负整数数组 你最初位于数组的第一个位置 数组中的每个元素代表你在该位置可以跳跃的最大长度 你的目标是使用最少的跳跃次数到达数组的最后一次位置 示例 输入 2 3 1
  • vue组件(个人学习笔记三)

    目录 友情提醒 第一章 vue的组件 1 1 什么是SPA应用 1 2 vue的组件简介 1 3 vue工程中的main js文件 第二章 Vue组件的使用 2 1 一般组件的自定义 2 2 注册组件 全局注册和局部注册 2 2 1 全局注
  • phpstorm 调试_PhpStorm中的多用户调试

    phpstorm 调试 by Ray Naldo 雷 纳尔多 Ray Naldo PhpStorm中的多用户调试 Multi User Debugging in PhpStorm 使用Xdebug和DBGp代理 Using Xdebug a
  • [转](四)在 GitHub 上创建仓库

    终于我们到了最激动人心的时刻了 在 GitHub 上创建第一个仓库 下面 我们通过一次上传 Github 的完整操作 实践学习 Git 的常用功能 首先 申请一个 Github 账户 打开 GitHub 你可以在主页的 banner 上快速
  • 华为OD机试 Python 【跳房子II】

    描述 跳房子 是个儿童游戏 你得跳过一排房子 从第一个直到最后一个 成功跳完一轮 你可以选择一个房子 当所有房子都被选了 拥有最多房子的人就赢了 如果你踩线或犯规 你这轮就结束 可能还得倒退 假设有count个房子格子 小红每轮可以选择跳一
  • 调整线程池对性能影响

    默认最小线程数是CPU的内核数 默认最大线程数是机器内核数的250倍 线程池调度会将激活的线程限制在默认最小线程数 如果没有线程结束的话每秒至多可以唤起两个新的线程 假设一个四核的机器 对于线程池来说 会运行很久或很多堵塞的不是I O引起的
  • 创建 WinForm 应用程序

    创建 WinForm 应用程序 创建 WinForm 应用程序 创建 WinForm 项目 点击 文件 gt 新建 gt 项目 选项 进入 新建项目 界面 选中 Windows窗体 应用程序 并设置项目的名称 位置及解决方案名称 如下图所示
  • JavaScript预编译过程

    JavaScript预编译过程 阶段 三个 预编译过程 1 JavaScript代码执行之前的预编译 案例说明 2 函数执行前的预编译 案例说明 总结 预编译两个小规则 预编译前奏 阶段 三个 词法语法分析 词法语法分析就是检查JavaSc
  • Linux中找不到blas库,linux – caffe:/usr/bin/ld:找不到-lcblas

    我已经在我的CentOS7 64位 中安装了BLAS 但是当我的使用全部在我的 caffe 它报告了一个错误 usr bin ld cannot find lcblas usr bin ld cannot find latlas colle
  • MySql创建新用户并赋予某些表的读写权限

    1 登录root用户 2 创建一个新用户 CREATE USER 用户名 IDENTIFIED BY 密码 3 赋予该用户相应权限 GRANT SELECT INSERT UPDATE DELETE ON 库名 表名 TO 用户名
  • 已解决No suitable driver found for jdbc:mysql://localhost:3306/ 问题

    已解决No suitable driver found for jdbc mysql localhost 3306 问题 本文目录 一 Bug描述 二 定位报错点及原因 三 最终的解决方案 四 相关注意事项 总结 一 Bug描述 在学习ja
  • Acwing-4653. 数位排序

    本题重点在于预处理每个数的各位之和 cmp函数的书写 根据题目中的描述 当两个数各个数位之和不同时 将数位和较小的排在前面 当数位之和相等时 将数值小的排在前面 不难写出cmp函数 快速排序的比较次数为nlogn次 本题中约为2 10 7
  • vue 读取Excel文件中的日期,转为所需要的时间格式

    const FileDate date number type String gt if date let year month day HH mm ss const time new Date date 1 24 3600000 1 8
  • 使用vue-video-player播放视频

    1 npm安装 vue video player videojs contrib hls 2 在main js中引入 import Vue from vue import App from App vue import router fro
  • python包管理-conda(miniconda)

    配置整理 channels https mirrors tuna tsinghua edu cn anaconda pkgs main http mirrors aliyun com anaconda pkgs main show chan
  • vue-router刷新页面后回到首页

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 今天给大家分享一个小知识点 注意查收 平时我们再写vue项目配置完路由之后会发现他不会自动回到首页 解决方法很简单 加个判断就可以啦 在App
  • Tomcat的卸载和安装

    Tomcat的卸载和安装 一 Tomcat卸载 1 删除Tomcat安装目录 2 删除相关注册表 3 删除Tomcat service 二 Tomcat安装 1 下载Tomcat安装包 2 解压和启动Tomcat 3 设置环境变量 4 查看
  • DTMF信号检测分析(Matlab)

    基于Matlab平台的DTMF信号检测 1 将录制好的一段按键音读入到Matlab平台 2 设计带通滤波器 去噪处理 可选 3 将给个按键音对应的信号一次分割 4 计算分割后信号的相应的频点值 幅度最大的两个点即为该信号的高低频 5 显示音
  • HTML特效推荐,超级惊艳 10款HTML5动画特效推荐[转]

    ylbtech html5 democss 今天咱们要来推荐 10 款超级惊艳的 HTML5 动画特效 有一些是基于 CSS3 和 jQuery 的 比较实用 特别是前几个 HTML5 动画 简直酷毙了 如今将它们分享给你们 也许你能用到这
  • python基本数据类型——整型,浮点型,复数,字符串

    由于也是初学python 所以在这里简要介绍一下python基础的数据类型 好在宏观上有个把握 整数类型 python里面的整数类型可正可负 不像其他的语言 python的整数并没有取值范围的限制 如 pow x y 函数用来计算x的y次方