一木.溪桥学Python-04: Python基础数据类型int ,float ,bool ,complex,None,str, 转义字符

Python基础教程:数据类型详解
本文详细介绍了Python的基础数据类型,包括数值类型(int、float、bool、complex)、空值类型None和序列类型str。重点讲解了int的进制转换、str的下标和切片操作以及转义字符的概念。通过例子展示了bool类型的值判断规则,以及如何进行数值与字符串的转换。

一木.溪桥 在Logic Education跟Amy学Python

12期:Python基础课
一木.溪桥学Python-04: Python基础数据类型int ,float ,bool ,complex,None,str, 转义字符
日期:2020年12月21日


学习目标:

  • 数值类型:int ,float ,bool ,complex
  • 空值类型:None
  • 序列类型:str

学习内容:

Python 基础数据类型

为什么会有数据类型?
  • 更好分配管理内存
  • 方便统一管理
  • 更贴近人类分类管理习惯
数据类型种类
  • 数值类型:int ,float ,bool ,complex
  • 序列类型:str , tuple , bytes (不可变) list(可变)
  • 集合类型:set
  • 映射类型:dict
数值类型:int ,float ,bool ,complex
  • 数值类型是不可变类型。指的是类型的值一旦有不同了,那么它就是一个全新的对象。
    数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象。
  • Python 的变量和数据类型的关系,变量只是对某个对象的引用或者说代号、名字、调用等等,变量本身没有数据类型的概念 。
    只有1,[1,2],"hello"这一类对象才具有数据类型的概念。
int
  • 通常用十进制(decimal) 来表示
  • 有时用八进制或十六进制来表示
  • 十六进制用 0x 前缀和 0-9 , a-f 表示,例如: 0xff00 。 python 中使用 hex() 将十进制转为十六
    进制
  • 八进制用 0o 前缀和 0-7 表示,例如 0o45 。 python 中使用 oct() 将十进制转为八进制
  • 二进制用 0b 前缀和 0-1 表示,例如 0b11 。 python 中使用 bin() 将十进制转为二进制
  • python 中int长度为32位,并且通常是连续分配内存空间的。eg.–>id(1),id(2)之间差32。
  • 小整数对象池
    python 初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期重复生成!这是一个包含262个指向整数对象的指针数组,范围是-5到256。也就是说比如整数10,即使我们在程序里没有创建它,其实在 Python 后台已经悄悄为我们创建了。
    作用:节省开销,增快运行速度
  • 整数缓冲区
    刚被删除的整数不会被真正立刻删除回收,而是在后台缓冲一段时间,等待下一次的可能调用。
    注意:在交互环境当中演示不出来效果。该效果在pycharm当中实现;并且注意不是小整数对象池当中的值。
float
  • 浮点数也就是小数,如1.21
  • 对于很大或很小的浮点数,一般用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8 ; 0.000012可以写成1.2e-5 .
  • float与int之间的转换
    float(x) -> floating point number -->float(1) --> 1.0
    int(x=0) -> integer -->int(2.5) --> 2 (只取整数部分)
complex 复数
  • 复数由 实数部分 和 虚数部分 构成,可以用 a + bj, 或者 complex(a,b) 表示,复数的 实部a 和 虚部b 都是浮点。
数学计算
  • 对于数学计算,除了前面提到过的简单的加减乘除等等,更多的科学计算需要导入 math 这个标准库,它包含了绝大多数我们可能需要的科学计算函数。

  • math 是Python自带函数,不用安装,但需要导入

  • import math
    print(math.ceil(4.1)) # math.ceil向上取整
    print(math.floor(4.5)) # math.floor向下取整
    print(math.pow(2, 3)) # math.pow(x,y),x**y 幂

  • abs(x) 取绝对值

  • round(x)
    Python 3进行改良,不再四舍五入,而是四舍六入五成偶。

    print(round(4.1)) # 舍去为4

    print(round(4.5)) # 舍去为4

    print(round(4.6)) # 进1为5

    print(round(3.5)) #五成偶

bool

在Python中,布尔类型只有两个值,True 与 False。

tips:

  • 数值类型:0、0.0的 bool 值都为 False,其它的都为 True。
  • 字符串:空字符串的 bool 值为 False,其它的都为 True。注意空格字符串为 True。
  • 列表:空列表的 bool 值为False,其它的都为 True。
  • None:的 bool 值永远为 False。
  • bool运算
    and 运算
    or 运算
    not 运算
    算术运算,注意:把 True 看作1,而 False 看作 0
空值类型
None

空值不是布尔类型,是 Python 里一个特殊的值,用 None 表示(首字母大写)。
None 不能理解为0,因为0是整数类型,而 None 是一个特殊的值。None 也不是
布尔类型,而是 NoneType。
在这里插入图片描述

序列类型
str
  • 字符串是 Python 中最常用的数据类型之一,使用单引号或双引号来创建字符串,使用三引号创建多行字符串。
  • tips:
    字符串的单引号与双引号都是 成对 出现的,不能一边单一边双。
    字符串是不可变的序列数据类型,不能直接修改字符串本身,和数字类型一样!
  • 整数在内存中占 一个字节,字符串不管中间多少内容都要 单独存储。
    在这里插入图片描述
字符串的下标 (重点)
==由于字符串是 序列数据结构 ,所以我们可以通过 下标 将字符串中某个字母取出来。下标也可称为索引,默认从0开始。==

在这里插入图片描述

字符串的切片 ( 重点)

在这里插入图片描述

  • tips:
    [:]–全取
    [::2]–步长为2
    [::-1]–步长为-1
    切片特点左闭右开
    索引默认从0开始
    当是取单个字符的时候,索引超出范围会报错。而切片时不会报错
    步长不能为0,也不允许为浮点数
字符串组成方式
字符串相加
字符串格式化
 %s %d %f
 str.format()
python3.6.4 引入 f''
  • %s %d %f 的弊端:要考虑数据类型
    %s --> str
    %d --> digt/decimal
    %f --> float

name = "DXD"

age = 20

print("%s 的年龄为%d " % (name, age))

run:
DXD 的年龄为20 
  • str.format()的特点:
    不用考虑数据类型,+下标后交换位置
name = "DXD"

age = 20

print("{0} 的年龄为{1} " .format(name, age))

run:
DXD 的年龄为20 
  • f’’{}…{} "
name = "DXD"

age = 20

print(f"{name} 的年龄为{age} ")

run:
DXD 的年龄为20 
转义字符
  • 转义字符是一种特殊的字符常量。转义字符以反斜线""开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。
  • 字符串中可以使用反斜线进行转义;如果字符串本身包含反斜线,则需要使用“\”表示,“\”就是转义字符。
符号作用
\\把反斜杠的“转义字符”作用去除,即变为真正的反斜杠。显示( \ )
\’把单引号的“表示字符串”作用去除。显示( ’ )
"把双引号的“表示字符串”作用去除。显示( " )
\a把 a 转成“响铃”(BEL)
\b把 b 转成“退格符”(BS)
\n把 n 转成“换行符”(LF)
\e转义
\000
\t把 t 转成“水平制表符”(TAB)
\v把 v 转成“垂直制表符”(VT)
\r把 r 转成“回车符”(CR)
\f把 f 转成“换页符”(FF)
\0dd把 dd 转成“八进制”对应的ASCII码
\xhh把 hh 转成“十六进制”对应的ASCII码
\other其它的字符以普通格式输出

作业:

在这里插入图片描述


作业答案:

题1:
opt = input("请选择: \'Y\' or \'N\': ")

if opt in('y', 'Y'):
    print("进入卸载")
elif opt in('n', 'N'):
    print("退出卸载")
else:
    print("输入不在选项范围之内!")
run:

请选择: 'Y' or 'N': y
进入卸载

请选择: 'Y' or 'N': n
退出卸载

请选择: 'Y' or 'N':G
输入不在选项范围之内!
题2:
bool:
  • 数值类型:0、0.0的 bool 值都为 False,其它的都为 True。
  • 字符串:空字符串的 bool 值为 False,其它的都为 True。注意空格字符串为 True。
  • 列表:空列表的 bool 值为False,其它的都为 True。
  • None:的 bool 值永远为 False。
str:
  • %d -->degit/decimal
  • %s -->str
  • %f -->float
  • str.format()
  • f“ ”
题3:
input_str = input("请输入字符串: ")

str_len = len(input_str)

print(f"字符串长度为:{str_len}")

if str_len < 20 :

    print(input_str[-1::-1])

else:

    print("字符串长度需小于20,请重新输入!")
    
  • run1:
    请输入字符串: aaaaaaaaaaahjk
    字符串长度为:14
    kjhaaaaaaaaaaa

  • run2:
    请输入字符串: aaaaaaaafffffffffffffffffff
    字符串长度为:27
    字符串长度需小于20,请重新输入!

题4:

34

<think>好的,我现在需要帮助用户解决在Linux上安装python-geohash时由于缺少wheel包而不得不使用legacy setup.py install的问题。用户希望避免这种情况,转而使用wheel包来安装。 首先,我得回忆下用户之前的对话历史。用户之前询问过如何在Linux安装python-geohash,我给出了步骤,包括安装依赖、使用pip安装,处理导入错误等。现在用户遇到了新的问题,涉及wheel包的缺失,导致pip回退到旧的安装方法。这可能是因为python-geohash没有提供预编译的wheel,或者用户的环境中没有安装wheel包,导致pip无法生成wheel,只能使用setup.py。 根据用户提供的引用内容,特别是引用[2]和[3],问题通常出现在项目缺少pyproject.toml且没有安装wheel包时,pip会使用旧的setup.py方式。解决方法可能包括安装wheel包,强制使用PEP 517标准,或者手动构建wheel。 首先,用户需要确保系统中已经安装了wheel包。根据引用[3],安装wheel可以避免使用legacy方法。所以在步骤里,应该先让用户安装wheel。命令是pip install wheel,如果用户使用Python3,可能需要用pip3。 然后,可能需要强制pip使用PEP 517模式,这可以通过--use-pep517选项实现,如引用[2]提到的。所以安装命令应该是pip install --use-pep517 python-geohash。不过,我需要确认这个选项是否适用于当前的情况,或者是否需要其他参数。 另外,用户可能遇到的情况是,即使安装了wheel,但python-geohash本身可能没有提供合适的配置,导致pip仍然无法生成wheel。这时候可能需要用户手动构建wheel。步骤包括下载源码包,使用python setup.py bdist_wheel生成wheel文件,然后安装。但这种方法需要用户先获取源码,可能稍微复杂,但可以作为备选方案。 另外,用户可能需要升级pip本身,因为旧版本的pip可能存在兼容性问题。所以建议用户先升级pip:pip install --upgrade pip。 此外,引用[4]提到另种安装方法是用python setup.py install,但用户想避免这个,所以重点应该放在如何让pip使用wheel。 可能的步骤总结: 1. 安装wheel包。 2. 升级pip到最新版本。 3. 使用--use-pep517选项安装。 4. 如果仍然失败,手动构建wheel。 另外,需要考虑Linux环境下可能的依赖问题,比如是否安装了编译所需的工具,如gcc、python-dev等,这些在之前的回答中已经提到,用户可能已经安装过了,但可能需要再次确认,避免编译时出错。 还要检查python-geohash的PyPI页面,看看它是否提供了wheel分发。如果官方没有提供wheel,那么用户可能需要从源码构建wheel,或者等待维护者提供。但根据用户的情况,可能需要手动处理。 最后,验证安装是否成功,用import geohash测试,如之前的步骤所示。 综上,分步骤的解决方案应包括安装wheel、升级pip、使用PEP 517,以及备选的手动构建方法,并确保系统依赖已安装。</think>### 分步解决方案 #### 步骤1: 安装或更新`wheel`包 Wheel是Python的二进制包格式,可避免使用`setup.py install`的旧安装方式。 ```bash pip install --upgrade wheel # 确保已安装最新版wheel # 若使用Python3且默认命令为pip3: pip3 install --upgrade wheel ``` #### 步骤2: 强制启用PEP 517模式 通过添加`--use-pep517`参数,强制pip使用现代构建系统(避免回退到`setup.py`)[^2]: ```bash pip install python-geohash --use-pep517 ``` #### 步骤3: 安装编译依赖(备用) 若仍提示构建失败,需确保系统已安装编译工具链: ```bash sudo apt-get update sudo apt-get install python3-dev gcc # 提供Python头文件和C编译器[^1] ``` #### 步骤4: 手动构建Wheel并安装(终极方案) 如果上述方法无效,可手动下载源码并构建Wheel: ```bash # 下载源码包 pip download python-geohash --no-binary :all: tar -xzf python-geohash-*.tar.gz # 解压源码 cd python-geohash-*/ # 生成Wheel文件 python setup.py bdist_wheel # 生成.whl文件 # 安装生成的Wheel pip install dist/*.whl # 自动使用二进制包 ``` #### 验证安装 ```python import geohash print(geohash.encode(39.9, 116.4)) # 预期输出类似'wx4g' ``` --- ### 关键问题解析 1. **为何强制使用PEP 517?** PEP 517定义了无需`setup.py`的构建标准,通过`pyproject.toml`声明构建依赖,避免传统安装方式的不稳定性。 2. **手动构建Wheel的作用** 当PyPI未提供预编译Wheel时(如某些库未适配Linux平台),手动构建可生成适配当前系统的二进制包,后续安装无需重复编译[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值