python基础数据类型——数字类型及其运算

本文详细讲解了Python中的基础数据类型(整数、浮点数),数字格式化方法,运算符优先级,包括整数缓存问题、四则运算、位操作等,并展示了关键概念如`round()`、`is`/`isnot`、`divmod()`和位移运算。

基础数据类型

整数

八进制0O

十六进制0X

二进制0B

浮点数

round()函数可以返回四舍五入的值

>>> round(2.3)
2

数字格式化

{:.2f}保留小数点后两位

{:+.2f}带符号保留小数点后两位

{:.0f}不带小数

>>> p=3.1415926
>>> str="{0:.2f},{0:+.2f},{0:.0f}"
>>> str.format(p)
'3.14,+3.14,3'

{:0>2d}数字补零,填充左边,宽度为2

{:0<4d}数字补零,填充右边,宽度为4

>>> num=18
>>> str="{0:0>4d},{0:0<4d}"
>>> str.format(num)
'0018,1800'

{:,}以逗号分隔的数字格式

{:.2%}百分比格式

{:.2e}指数记法

>>> num=100000000
>>> s="{0:,},{0:.2e},{0:.2%}"
>>> s.format(num)
'100,000,000,1.00e+08,10000000000.00%'

{:10d}右对齐

{:<10d}左对齐

{:^10d}中间对齐

>>> num=16
>>> str="{0:>6d},{0:<6d},{0:^6d}"
>>> str.format(num)
'    16,16    ,  16  '

同一运算符

用于比较两个对象的储存单元,实际比较的是对象的地址

is 判断两个标识符是不是引用一个对象

is not 判断两个标识符是不是引用不同对象

is与==区别:

==用于判断引用变量引用的值是否相同,默认调用对象的__eq__()方法

is运算符比===效率高,在变量和None进行比较时更应使用is

整数缓存问题

在命令换模式下,python仅仅对较小的整数对象进行缓存(范围为[-5 , 256])

>>> a=10
>>> b=10
>>> a is b
True
>>> id(a)
2846217404944
>>> id(b)
2846217404944

>>> a=600
>>> b=600
>>> a is b
False
>>> id(a)
2846218443376
>>> id(b)
2846218443312

在文件中执行,则对[-5,任意正整数]范围内整数进行缓存(因为解释器做了一部分优化)

运算符

优先级

位运算和算术操作>比较运算符>赋值运算符>逻辑运算符

**
按位翻转

*/%//

±

<< >> 左移右移

& 位‘AND’

^| 位运算符

= >= > <= < 比较运算符

<> == = 等于运算符

= %= /= //= 赋值运算符

is is not 身份运算符

in not in 成员运算符

not or and 逻辑运算符

四则运算+ - * /

乘法运算符

1数字计算

2字符串复制

>>> str='abc'
>>> str*2
'abcabc'

3列表,元组复制

>>> L=[1,2,3]
>>> L*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

/浮点数除法//地板除

得到的结果会忽略纯小数的部分,得到整数的部分,地板除使用//进行。

>>> 1/8
0.125
>>> 1//8
0
小数点位数

使用Python计算小数的时候,经常需要保留小数点后若干位,可以使用round()函数来处理,这里先了解round的调用方式,使用两个参数,第一个是需要保留小数点位数的数值,第二个是保留的位数。

num = 10 / 3

print(num) # ==> 3.3333333333333335

# 使用round保留两位小数

round(num, 2) # ==> 3.33

**幂

>>> 2**3
8

divmod()函数同时得到商和余数,返回元组

>>> divmod(10,3)
(3, 1)

取模运算%

>>> 8%3
2

比较运算符

可以连用

>>> 1<2<3
True

增强值赋值运算符

+= -= *= /= //= **= %= <<= >>= &= | ^=

位操作

按位或|,按位异或^,按位与&

>>> a=0b101000101001
>>> b=0b000100000100
>>> c=(a|b)
>>> bin(c)
'0b101100101101'
>>> d=(a^b)
>>> bin(d)
'0b101100101101'
>>> e=(a&b)
>>> bin(e)
'0b0'

按位非~

正整数补码=原码,负整数补码=原码符号位不变,其他位按位取反加1

>>> i=123
>>> ~i
-124
>>> j=-123
>>> ~j
122

移位>><<

按位向右移动就是删除x二进制字符串结尾后y位

按位向左移动就是在x二进制字符串结尾添加y个0

>> a=3
>>> bin(a)
'0b11'
>>> b=a<<2 #左移一位*2
>>> bin(b)
'0b1100'
>>> c=a>>2 #右移一位/2
>>> bin(c)
'0b0'

### Python 2.3 版本中字符串处理的基本数据类型Python 的历史发展中,早期版本对于字符串类型的定义相对较为简单。Python 2.x 系列中的基本字符串类型主要包括 `str` 和 `unicode`[^4]。 #### 1. **`str` 类型** `str` 是一种不可变的数据类型,在 Python 2.3 中主要用于表示 ASCII 编码的字符串。它是一个字节序列,通常用来存储普通的文本信息。由于其基于字节的设计,`str` 只能直接表示 ASCII 范围内的字符(0-127)。如果需要处理超出此范围的字符,则可能涉及编码/解码过程。 #### 2. **`unicode` 类型** 为了支持国际化需求,Python 2.3 引入了 `unicode` 数据类型来专门处理 Unicode 文本。这种类型允许开发者更方便地操作多语言文字,例如中文、日文或其他非拉丁字符集。与 `str` 不同的是,`unicode` 使用两个字节或更多字节来表示每一个字符,从而能够覆盖几乎所有的书写系统。 需要注意的是,在实际编程过程中,当涉及到不同编码之间的转换时,可能会遇到一些常见的错误,比如 `UnicodeEncodeError` 或者 `UnicodeDecodeError`。因此了解并掌握正确的编码方式非常重要[^5]。 #### 3. **字符串的操作基础** 无论是哪种类型的字符串,在 Python 中都可以通过索引来获取其中特定位置上的字符;也可以利用切片功能提取子串[^1]。此外还有许多内置函数可用于修改或者查询字符串属性,像 `.upper()`, `.lower()` 进行大小写的变换;`.strip()` 移除两端空白字符等等[^2]。 下面给出一段简单的例子展示如何创建这两种类型的变量以及执行基本操作: ```python # 创建 str 类型对象 (ASCII) ascii_str = 'hello world' print(ascii_str.upper()) # 创建 unicode 类型对象 (含非ASCII字符) uni_str = u'你好世界' print(len(uni_str)) # 尝试混合使用两者会自动尝试隐式转换成统一形式 mixed_result = ascii_str.decode('utf8') + uni_str print(mixed_result.encode('utf8')) ``` 以上代码片段展示了从普通字符串到大写字母转化的过程,计算了一个含有四个汉字的长度,并演示了跨类型加法运算前后的必要步骤——即显式指定编解码规则以避免潜在冲突。 尽管上述内容适用于较旧版次的语言环境,但对于理解现代计算机科学领域内有关于文本表现形式的知识仍然具有重要意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值