Python基本数据类型

简介: Python基本数据类型

文章目录


基本数据类型


数字类型及其操作


整数类型


浮点类型


复数类型


数值运算操作符


数值运算函数


好好学习,天天向上


问题1: 1的力量


问题2:0.5%和0.1%的力量


问题3: 工作日的力量


字符串类型


字符串类型的表示


字符串操作符


字符串处理函数


字符串处理方法


字符串类型的格式化


time库基本介绍


时间获取


时间格式化


程序计时应用


文本进度条实现


学习目标:


Python语言数字及字符串类型


初步用编程进行字符类操作(⭐⭐⭐)


数字类型及其操作



学习内容:


整数类型


浮点数类型


复数类型


数值运算操作符


数值运算函数


整数类型


整数无限制


pow(x,y)函数:计算x的y次方


a= pow(2,99)
b= pow(2,pow(2,10))
print(a)
print(b)

12.png


4种进制表示


十进制:1000,89,-34


二进制:以0b或0B开头,0b010,-0B101


八进制:以0o或0O(零ou不是00),0o1234,-0O678


十六进制:以0x或0X开头,0x9b,-0X89


浮点类型


与数学中实数的概念一致


带有小数点及小数的数字


浮点数取值范围和小数精度都存在限制,但常规计算可忽略不计


取值范围数量级约为 -10^308 ~ 10^308 ,精度数量级10 ^-16


浮点数间运算存在不确定尾数,不是bug


0.1 + 0.3

0.4


0.1 + 0.2

0.30000000000000004

不确定尾数


Why?


因为计算机语言设计问题,Python语言用53位二进制表示小数部分,由于计算机中的二进制跟十进制之间不存在严格的对等关系(学过计算机科学导论应该明白)0.1在用二进制表是的时候,它是一个无限小数,计算机就会截取53位,使其无限的接近0.1,并不真正等于0.1,所以会有尾数产生。


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


我们发现0.1+0.2计算机认为是不等于0.3的,因为有不确定尾数在调皮,那么,如何解决呢?


round(x,d):对X进行四舍五入,d是小数截取位数

在浮点数间运算及比较时用round函数辅助完成(金牌辅助)

不确定尾数一般发生在 10^-16 左右,所以说round()函数十分有效。


科学计数法


浮点数可以采用科学计数法表示


使用字母e或E作为幂的符号,以10为基数,格式如下:
<a>e<b> 表示 a*10b
 例如:4.3e-3 值为0.0043
      9.6E5 值为960000.0


复数类型


与数学中复数的概念一致

x2 = -1,那么x的值是什么? - 定义 j = −𝟏𝟏 ,以此为基础,构建数学体系


a+bj 被称为复数,其中,a是实部,b是虚部
z = 1.23e-4+5.6e+89j 
- 实部是什么? z.real 获得实部
- 虚部是什么? z.imag 获得虚部


了解


数值运算操作符


一元操作符
x + y 加     x与y之和
x – y 减     x与y之差
x * y 乘     x与y之积
x / y 除          x与y之商 10/3结果是3.3333333333333335
x // y 整数除    x与y之整数商 10//3结果是3
+ x       x本身
- y       x的负值
x % y 余数      模运算 10%3结果是1
x ** y              幂运算,x的y次幂   当y是小数时,开方运算10**0.5结果是 根号10
二元操作符
x += y 
x -= y 
x *= y 
x /= y 
x //= y 
x %= y 
x **= y
>>> x = 3.1415
>>> x **= 3 # 与 x = x **3 等价
31.006276662836743


类型间可进行混合运算,生成结果为"最宽"类型


三种类型存在一种逐渐"扩展"或"变宽"的关系:

整数 -> 浮点数 -> 复数

例如:123 + 4.0 = 127.0 (整数+浮点数 = 浮点数)


数值运算函数


一些以函数形式提供的数值运算功能


abs(x) 绝对值,x的绝对值abs(-10.01) 结果为 10.01


divmod(x,y) 商余,(x//y, x%y),同时输出商和余数 divmod(10, 3) 结果为 (3, 1)


pow(x, y[, z]) 幂余,(x**y)%z,[…]表示参数z可省略 pow(3, pow(3, 99), 10000) 结果为 4587


round(x[, d]) 四舍五入,d是保留小数位数,默认值为0 round(-10.123, 2) 结果为 -10.12


max(x1,x2, … ,xn) 最大值,返回x1,x2, … ,xn中的最大值,n不限 max(1, 9, 5, 4, 3) 结果为 9


min(x1,x2, … ,xn) 最小值,返回x1,x2, … ,xn中的最小值,n不限 min(1, 9, 5, 4, 3) 结果为 1


int(x) 将x变成整数,舍弃小数部分 int(123.45) 结果为123; int(“123”) 结果为123

float(x) 将x变成浮点数,增加小数部分 float(12) 结果为12.0; float(“1.23”) 结果为1.23


complex(x) 将x变成复数,增加虚数部分 complex(4) 结果为 4 + 0j


好好学习,天天向上



基本问题:持续的价值


问题1: 1的力量


一年365天,每天进步1%,累计进步多少呢?

1.01^365

一年365天,每天退步1%,累计剩下多少呢?

0.99^365

代码实现


up = pow(1.001, 365)
down = pow(0.999, 365)
print("向上:{:.2f},向下:{:.2f}".format(up, down))


结果:


13.png


不积小流无以成江海,不积跬步无以至千里。


问题2:0.5%和0.1%的力量


一年365天,每天进步0.5%或0.1%,累计进步多少呢?

一年365天,每天退步0.5%或0.1%,累计剩下多少呢?

1.005^365 0.995^365

1.01^365 0.99^365


代码实现


day = 0.005
up = pow(1+day, 365)
down = pow(1-day, 365)
print("向上:{:.2f},向下:{:.2f}".format(up, down))


结果:


14.png


问题3: 工作日的力量


一年365天,一周5个工作日,每天进步1%

一年365天,一周2个休息日,每天退步1%

这种工作日的力量,如何呢?


1.01365 (数学思维)——》 for…in… (计算思维)


代码实现:


#利用循环模拟 nice
#注意代码的缩进
up = 1.0
day = 0.01
for i in range(365):
    if i % 7 in [6,0]:  #用来确定周末的时间
         up = up*(1-day)
    else:     #工作日的时间
         up = up*(1+day)
print("工作日的力量:{:.2f} ".format(up))


结果:


15.png


1.001^365 = 1.44

1.005^365 = 6.17

1.01^365 = 37.78

1.019^365 = 962.89


字符串类型


主要内容:


字符串类型的表示


字符串操作符


字符串处理函数


字符串处理方法


字符串类型的格式化


字符串类型的表示


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


字符串由一对单引号或一对双引号表示

"请输入带有符号的温度值: " 或者 ‘C’


字符串是字符的有序序列,可以对其中的字符进行索引

“请” 是 "请输入带有符号的温度值: " 的第0个字符


表示方法


字符串有 2类共4种 表示方法
- 由一对单引号或双引号表示,仅表示单行字符串
"请输入带有符号的温度值: " 或者 'C'
- 由一对三单引号或三双引号表示,可表示多行字符串
''' Python
语言 '''


为什么这样提供四种


假如我们想用单引号,就可以外加一对双引号

加入我们们既想用双引号又想用单引号,就可以让我们的三引号登场

另外没有给变量名的三引号字符串可以充当多行注释来使用


正向递增序号 和 反向递减序号


20210626201024383.png


使用[ ]获取字符串中一个或多个字符


- 索引:返回字符串中单个字符 <字符串>[M]
"请输入带有符号的温度值: "[0] 或者 TempStr[-1]
- 切片:返回字符串中一段字符子串 <字符串>[M: N] 
"请输入带有符号的温度值: "[1:3] 或者 TempStr[0:-1]


高级用法 使用[M: N: K]根据步长对字符串切片


<字符串>[M: N],M缺失表示至开头,N缺失表示至结尾
"〇一二三四五六七八九十"
[:3] 结果是 "〇一二" 
 <字符串>[M: N: K],根据步长K对字符串切片
"〇一二三四五六七八九十"
[1:8:2] 结果是 "一三五七" "〇一二三四五六七八九十"
[::-1] 结果是 "十九八七六五四三二一〇"


转义符


- 转义符表达特定字符的本意
"这里有个双引号(\")" 结果为 这里有个双引号(") - 转义符形成一些组合,表达一些不可打印的含义
"\b"回退 "\n"换行(光标移动到下行首) "\r" 回车(光标移动到本行首)


字符串操作符


20210626201824596.png


获取星期字符串


weekStr = "星期一星期二星期三星期四星期五星期六星期日"
weekId = eval(input("请输入星期数字(1-7):"))
pos = (weekId – 1 ) * 3
print(weekStr[pos: pos+3])

16.png


优化


weekStr = "一二三四五六日"
weekId = eval(input("请输入星期数字(1-7):")) #获取用户输入,是一个字符串类型 eval函数去掉引号 如果没加就会报错
print("星期" + weekStr[weekId-1])   #因为字符串下标是0开始的

17.png


字符串处理函数


20210626203418391.png2021062620344184.png



一些以函数形式提供的字符串处理功能


Python字符串的编码方式


统一字符编码,即覆盖几乎所有字符的编码方式

从0到1114111 (0x10FFFF)空间,每个编码对应一个字符

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


玩一玩


b="1 + 1 = 2" + chr(10004)
c="这个字符♉的Unicode值是:a" + str(ord("♉"))
print(b)
print(c)
for i in range(12):
    print(chr(9800 + i), end="")

18.png


字符串处理方法


"方法"在编程中是一个专有名词


- "方法"特指<a>.<b>()风格中的函数<b>()
- 方法本身也是函数,但与<a>有关,<a>.<b>()风格使用
- 字符串或字符串变量是<a>,存在一些可用方法


20210626204705974.png

20210626204757408.png

20210626204658629.png


字符串类型的格式化


格式化是对字符串进行格式表达的方式


20210626205300998.png

20210626205320525.png

20210626205333178.png

20210626205340734.png

20210626205350113.png


time库基本介绍


time库是Python中处理时间的标准库


用途:


计算机时间的表达

提供获取系统时间并格式化输出功能


提供系统级精确计时功能,用于程序性能分析


用法:

import time
time.<b>()


time库包括三类函数


时间获取:time() ctime() gmtime()

时间格式化:strftime() strptime()

程序计时:sleep(), perf_counter()


时间获取


20210626205900700.png

20210626205909813.png


时间格式化


将时间以合理的方式展示出来


格式化:类似字符串格式化,需要有展示模板

展示模板由特定的格式化控制符组成

strftime()方法


2021062621004915.png

20210626210125460.png

20210626210134821.png

2021062621021657.png

20210626210318694.png


程序计时应用


程序计时指测量起止动作所经历时间的过程

测量时间:perf_counter()

产生时间:sleep()


20210626210435251.png

20210626210443989.png


文本进度条实现


需求分析


采用字符串方式打印可以动态变化的文本进度条
进度条需要能在一行中逐渐变化
如何获得文本进度条的变化时间?
采用sleep()模拟一个持续的进度
import time
scale = 10
print("------执行开始------")
for i in range(scale+1):
    a = '*' * i         #增
    b = '.' * (scale - i)          #减
    c = (i/scale)*100       #进度数字实现
    print("{:^3.0f}%[{}->{}]".format(c,a,b))        #循环打印进度条
    time.sleep(0.4)         #每隔0.4秒打印一次,模拟
print("------执行结束------")


20210626211430512.png

20210626211430512.png


优化单行动态刷新


不让换行就可以 哈哈

刷新的关键是 \r退回行首


刷新的本质是:用之后打印的字符覆盖之前的字符

不能换行:print()需要被控制

要能回退:打印后光标退回到之前的位置 \r


import time
for i in range(101):
    print("\r{:3}%".format(i), end="")
    time.sleep(0.1)


完整代码:


import time
s = 40
print("正在安装".center(s//2, "-"))
start = time.perf_counter()
for i in range(s+1):
    a = '◼' * i
    b = '.' * (s - i)
    c = (i/s)*100
    d = time.perf_counter() - start
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,d),end='')
    time.sleep(0.1)
print("\n"+"安装完成".center(s//2,'-'))


最终效果


21.png


……


22.png

相关文章
|
3月前
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
47 1
|
3月前
|
数据处理 Python
【编程入门必读】Python数据类型大揭秘:掌握这些,让你的代码瞬间高大上!
【8月更文挑战第22天】Python提供多样数据结构支持编程需求。基本数据类型如数值(整型、浮点型、复数)、布尔型、字符串;复合数据类型含列表(有序、可变)、元组(有序、不可变)、字典(键值对)、集合(无序、唯一元素)。还有特殊类型如`NoneType`和`range`。Python内置数据类型转换如`int()`, `float()`, `str()`等方便使用。掌握这些类型有助于编写高效Python代码。
32 0
|
1月前
|
Python
【10月更文挑战第7天】「Mac上学Python 13」基础篇7 - 数据类型转换与NoneType详解
本篇将详细介绍Python中的常见数据类型转换方法以及 `NoneType` 的概念。包括如何在整数、浮点数、字符串等不同数据类型之间进行转换,并展示如何使用 `None` 进行初始赋值和处理特殊情况。通过本篇的学习,用户将深入理解如何处理不同类型的数据,并能够在代码中灵活使用 `None` 处理未赋值状态。
57 2
【10月更文挑战第7天】「Mac上学Python 13」基础篇7 - 数据类型转换与NoneType详解
|
1月前
|
编译器 数据安全/隐私保护 Python
Python--基本数据类型
【10月更文挑战第4天】
|
1月前
|
存储 Python
python数据类型、debug工具(一)
python数据类型、debug工具(一)
|
1月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
21 3
|
2月前
|
存储 Java C++
30天拿下Python之数据类型
30天拿下Python之数据类型
36 4
|
1月前
|
存储 程序员 Python
Python编程入门:探索变量和数据类型
【10月更文挑战第8天】本文是针对初学者的Python编程入门指南,重点介绍Python中变量的定义和使用以及不同的数据类型。我们将通过实例来理解基本概念,并展示如何在Python程序中应用这些知识。文章旨在帮助初学者建立扎实的基础,使他们能够更自信地编写Python代码。
|
1月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
31 0
|
1月前
|
存储 程序员 Python
python数据类型、debug工具(二)
python数据类型、debug工具(二)