通常被称为是整型或整数,可以是正整数或负整数,不带小数点。Python3整型是没有限制大小的,可以当做long类型使用, 但实际上由于机器内存的有限,我们使用的整数是不可能无限大的。
整型的四种表现形式:
各进间数字进行转换(内置函数):
浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布尔True或False值、空对象、值为零的任何数字或者Null对象None的布尔值都是False。在Python3中True=1,False=0,可以和数字型进行运算。
下列对象的布尔值是False: None;False;0(整型),0.0(浮点型);0L(长整形);0.0+0.0j(复数);“”(空字符串);[](空列表);()(空元组);{}(空字典)。
值不是上列的任何值的对象的布尔值都是True,例如non-empty,non-zero等。用户创建的类实例如果是定义了nonzero(nonzeor())或length(len())且值为0,那么它们的布尔值就是False。
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
BMI指数即为身体质量指数,是国际上衡量人体胖瘦程度以及是否健康的一个标准,计算公式为:体质指数(BMI)=体重(kg)/(身高2)(m),本实例通过编写程序,实现根据输入的身高体重计算BMI值。具体代码如下所示。
“““
根据身高体重计算某个人的BMI指数:
体质指数(BMI)=体重(kg)+身高2(m)
”””
Height = float(input(‘请输入您的身高(m):’))
Weight = float(input(‘请输入年您的体重(kg):’))
BMI = weight / (height * height)
Print(‘您的BMI值为:’,BMI)
Python内置了一系列可实现强制类型转换的函数,保证用户在有需求的情况下,将目标数据转换成指定的类型,数字之间的转换函数有int()、float()、str(),关于这些函数的功能说明如下表。
函数 | 说明 |
---|---|
int() | 将浮点型、布尔类型和符合数值类型规范的字符串转换成整型 |
float() | 将整型和符合数值类型规范的字符串转换成浮点型 |
str() | 将数值类型转换成字符串 |
在使用类型转换函数时需要注意以下两点:
用户在使用类型转换函数式必须考虑到以上两点,否则可能会因字符串不符合要求而导致在转换时发生错误,或因截断而产生的预期之外的计算结果。
与其他的编程语言相比较,Python语言有更丰富的运算符,并且功能更加强大。因此,Python数据可以用相对简单的方式,实现丰富的运算功能。下面将介绍Python中的算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符,以及各运算符的优先级。
算术运算符主要用于两个对象算数计算,包括+、-、*、/、//、%、**,他们都是双目运算符,只要在终端输入两个操作数和一个算术运算符组成的表达式,Python解释器就会解析表达式,并打印结果。 假设变量: a=10,b=20,Python算术运算符的功能描述以及实例如表所示。
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分(向下取整) | >>> 9//24>>> -9//2-5 |
比较(关系)运算符用于两个对象比较,包括==、!=、<、>、=<、>=,经常用于布尔测试,输出结果为True或False。
假设变量a为10,变量b为20,Python比较运算符的功能描述以及实例如表所示。
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true。 |
<> | 不等于 - 比较两个对象是否不相等 | ( a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
赋值运算符用于对象的赋值,将运算符右边的值(或计算结果)赋给运算符左边,主要包括=、+=、-=、*=、/=、%=、**=、//=。
假设变量a为10,变量b为20,Python赋值运算符的功能描述以及实例如表所示。
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
逻辑运算符用于逻辑运算(与或非等)。Python语言支持逻辑运算符,包括and(与)、or(或)、not(非),逻辑运算符可以将多个条件按照逻辑进行连接,变成复杂的条件。
假设变量 a 为 10, b为 20,Python逻辑运算符的功能描述以及实例如表所示。
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
位运算符用于对Python对象进行按照存储的bit操作,包括&、|、^、~、<<、>>,按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下。
下表中变量 a 为 60,b 为 13,二进制格式如下:a = 0011 1100,b = 0000 1101。 a&b = 0000 1100,a|b = 0011 1101,a^b = 0011 0001,~a = 1100 0011,Python位算符的功能描述以及实例如表所示。
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x类似于 -x-1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数。 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
除了以上的一些运算符之外,Python还支持成员运算符,用于判断一个对象是否包含另一个对象,包括in、not in,Python成员运算符的功能描述以及实例如表所示。
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
Python的一切数据都可以视为对象,每个对象都有3个属性:类型、值和身份。其中,类型决定了对象可以保存什么样的值;值代表对象表示的数据;身份就是内存地址,它是每个对象的唯一标识,对象被创建后身份不会发生任何变化。
身份运算符用于判断是不是引用自一个对象,包括is和is not,用于判断两个对象的内存地址是否相同。假设变量a的值为10,变量b的值为10,Python身份运算符的功能描述以及实例如表所示。
运算符 | 描述 | 实例 |
---|---|---|
is | 测试两个对象的内存地址是否相同,相同返回True,不同返回False。 | >>>a = 10>>>b = a>>>a is bTrue |
is not | 测试两个对象的内存地址是否不同,不同返回True,否则返回False。 | >>>a = 10>>>b = a>>>a is not bFalse |
Python支持使用多个不同的运算符连接简单的表达式,实现相对复杂的动能,为了避免含有多个运算符的表达式出现歧义,Python为每一种运算符都设定了优先级。以下表列出了从最高到最低优先级的所有运算符。
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
字符串是一种表示文本的数据类型,它由符号或者数值组成的一个连续序列,Python中的字符串是不可变的,字符串一旦被创建便不可修改。 根据字符串中是否包含换行符,可以将字符串划分为单行字符串和多行字符串两种,他们各自定义的方式有所不同。
Python支持使用单引号、双引号和三引号来定义字符串,通常情况下,单引号和双引号用于定于单行字符串。
#单引号定义字符串
single_symbol = ‘hello python’
#双引号定义字符串
double_symbol = “hello python”
多行字符串一一对三引号(三个单引号或三个双引号)作为边界来表示,字符串中可以包含换行符、制表符或者其他的特殊字符,如:
#三引号定义字符串
three_symbol = ‘‘‘hello python learn python’’’
#或
three_symbol =“ “ “hello python learn python” ” ”
#输出以上使用三引号定义的字符串,结果如下:
hello python
learn python
定义字符串时单引号和双引号可以嵌套使用,需要注意的是,使用双引号表示的字符串中允许嵌套单引号,但不允许包含双引号。例如:
mixture = “It ’s good”
#单引号双引号混合使用
此外,如果单引号或者双引号中的内容包含换行符,那么字符串会被自动换行。例如:
double_symbol = “hello \python”
#输出结果为:
hello python
Python的字符串可通过占位符%、format()方法和f-strings三种方式实现格式化输出,下面将分别介绍这三种方式。
利用占位符%对字符串进行格式化时,Python会使用一个带有格式符的字符串作为模板,这个格式符用于为真实值预留位置,并说明真实值应该呈现的形式。 常见的占位符如表所示。
符号 | 说明 | 符号 | 说明 |
---|---|---|---|
%s | 字符串 | %d | 十进制整数 |
%o | 八进制整数 | %x | 十六进制整数(a~f为小写) |
%X | 十六进制整数(A~F为大写) | %e | 指数(底写为e) |
%f | 浮点数 | ||
format()方法同样可以对字符串进行格式化输出,与占位符%不同的是,使用format()方法不需要关注变量的类型。 format()方法的基本使用格式如下:
<字符串>.format(<参数列表>)
在format()方法中使用“{}”为变量预留位置。
如果字符串中包含多个“{}”,并且“{}”内没有指定任何序号(从0开始编号),那么默认按照“{}”出现的顺序分别用format()方法中的参数进行替换;如果字符串“{}”中明确指定了序号,那么按照序号对应的format()方法的参数进行替换。
format()方法还可以对数字进行格式化,包括保留n位小数、数字补充和显示百分比,接下来将分别进行介绍。
f-strings是从Python3.6版本开始加入Python标准库的内容,它提供了一种更为简洁的格式化字符串方法。
f-strings在格式上以f或F引领字符串,字符串中使用{}标明被格式化的变量。f-strings本质上不再是字符串常量,而是在运行时运算求值的表达式,所以在效率上优于占位符%和format()方法。
使用f-strings不需要关注变量的类型,但是仍需要关注变量传入的位置。
字符串在实际开发中经常被用到,掌握字符串的常用操作符有助于提高代码编写效率。假设a=“人生苦短”,b=“我用Python”,下表为常见的字符串操作符及其示例。
操作符 | 说明 | 示例 |
---|---|---|
+ | 连接字符串 | a+b,结果为人生苦短,我用Python |
* | 复制字符串 | a*2,结果为人生苦短人生苦短 |
>,<,==,!=,>=,<= | 按照ASCⅡ值的大小比较字符 | a==b,结果为False |
in,not in | 检查字符串中是否存在或不存在某个字串 | a in b,结果为False |
列表是Python中最灵活的有序序列,它可以存储任意类型的元素,开发人员可以对列表中的元素进行添加、删除、修改等操作。本部分将对列表的创建、遍历和排序、添加、删除以及修改等操作进行介绍。
3种创 建方式
range([start,] end [,step])
start参数:可选,表示起始数字,默认是0。
end参数:必选,表示结尾数字。
Step参数:可选,表示步长,默认是1.
Python3中range返回的是一个range对象, 而不是列表。在使用时需要通过list()方 法将其转换成列表对象。
列表的遍历分为三种:
如果希望对列表中的元素进行重新排列,则可以使用sort方法或者reverse方法实现。其中,sort方法是将列表中的元素按照特定的顺序重新排列,默认为由小到大。如果要将列表中的元素由大到小排列,则可以将sort方法中reverse参数的值设为True。reverse方法是将列表逆置。 接下来通过一个案例来演示这两种方法的使用,例如:
list_demo = [1,4,2,3,5]
list_demo.reverse()
print(list_demo)
list_demo.sort()
print(list_demo)
list_demo.sort(reverse=True)
print(list_demo)
上述实例中,第1行代码定义了一个包含5个数值元素的列表list_demo,第2-3行代码调用reverse方法将列表进行搁置后输出,第4-5行代码调用sort方法按照从小到大的顺序排列列表中的元素后进行输出,第6-7行代码调用sort方法按照由大到小的顺序排列列表中的元素后重新输出。程序运行的结果如图所示。
商品价格区间设置与排序:
当我们在网上购物时,对于同一类型的商品,不同的商家设置的价格可能不同,如何选择一个价格中等的商品呢?例如现有一件商品,8个商家给出的价格如表所示。
用户根据提示“请输入最大价格:”和“请输入最低价格:”分别输入最大价格和最小价格,选择符合自己的需求价格空间,并按照提示“1.价格降序排序(换行) 2.价格升序排序(换行) 请选择排序方式:”输入相应的序号,最终将排序后的结果全部输出。具体代码和运行结果如图所示。
price_li = [955, 899, 920, 968, 999, 869, 912, 966]
section_li = []
max_section = int(input("请输入最大价格:"))
min_section = int(input("请输入最小价格:"))
for i in price_li:
if min_section <= i <= max_section:
section_li.append(i)
print("1.价格降序排序")
print("2.价格升序排序")
choice_num = int(input("请选择排序方式:"))
if choice_num == 1:
section_li.sort(reverse=True)
else:
section_li.sort()
print(section_li)
通过“+”号将两个序列连接,通过该方法也可以实现为列表添加元素。但是这种方法的执行速度要比直接使用列表对象的append()方法慢,所以建议在实现添加元素时,使用列表对象的append()方法实现。
列表对象append()方法用于在列表末尾追加元素,语法格式如下:
listname.append(obj)
其中,listname为要添加元素的列表名称,obj为要添加到列表末尾的对象。
定义一个包括四个元素的列表,然后应用append()方法向该列表的末尾再添加一个元素,代码为:
①insert()方法 insert()方法主要用于在列表指定的位置插入元素。
②extend()方法 上面介绍的是向列表中添加一个元素,如果想要将一个列表中的全部元素添加到另一个列表中,可以使用列表对象的extend()方法,语法格式如下:
listname.extend(sqe)
listname为原列表,sqe要添加的列表。语句执行后,sqe2的内容将追加到listname后面。
修改列表中的元素只需要通过索引获取该元素,然后再为其重新赋值即可。
定义一个保存3个元素的列表,然后修改索引值为1的元素,代码如下
删除元素常用的方法有del语句、remove()方法和pop()方法,具体介绍如下: ①del语句 del语句用于删除列表中指定位置的元素。
②remove()方法 remove()方法用于移除列表中的某个元素,若列表中有多个匹配的元素,只会移除匹配到的第一个元素。
③pop()方法 pop()方法用于移除列表中的某个元素,如果不指定具体元素,那么移除的就是列表中的最后一个元素。
列表可以存储任何元素,当然也可以存储列表,如果列表存储的元素也是列表,则称为嵌套列表。 嵌套列表的创建方式与普通列表的创建相同。
例如: [ [0] , [1] , [1,2] ] 以上代码创建了一个嵌套列表,
该表中包含了3个列表,其中索引为0的元素为[0],索引为1的元素为[1],索引为2的元素为[2,3]。
嵌套列表元素的访问方式与普通列表一样,可以使用索引访问嵌套列表中的元素。若希望访问嵌套的内层列表中的元素,需要先使用索引获取内层列表,再使用索引访问被嵌套的列表中的元素。
如果希望嵌套列表的内层列表中添加元素,首先要获取内层列表,再调用相应的方法往指定的列表中添加元素。
元组的创建方式有两种,通过“()”来创建或者使用tuple()函数快速创建。
通过“()”来创建元组时,()也可以省略。 如果元组只有一个元素,则必须后面加逗号。这是因为解释器会把(1)解释为整数 1, (1,) 解释为元组。
使用tuple()函数创建元组时,如果不传入任何数据,就会创建一个空元组;如果要创建包含元素的元组,就必须传入可迭代类型的数据。
可以通过索引或切片的方式来访问元组中的元素。
元组还可以使用切片访问元组中的元素。
上述例子定义了包含5个元素的元组,使用切片截取了索引2到索引4的元素。
阿拉伯数字具有简单易写、方便使用的特点,因此成为了最流行的数字书写方式,但是在使用阿拉伯数字时,可以对某些数字不漏痕迹地修改成其他数字。例如,将数字“1”改为数字“7”,将数字“8”改为数字“3”,为了避免不必要的麻烦,可以使用中文大写数字如壹、贰、叁、肆等替换阿拉伯数字。现实现将输入的阿拉伯数字转为中文大写数字,代码及运行结果如图所示。
uppercase_numbers = ("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")
number = input("请输入一个数字:")
for i in range(len(number)):
print(uppercase_numbers[int(number[i])], end="")
Python中字典的创建方式有3中,包括使用花括号“{}”创建、使用内置函数dict()创建和调用dict的方法fromKeys创建。
使用花括号“{}”创建字典时,字典中的键(key)和值(value)使用冒号连接,每个键值对之间使用逗号分隔。具体格式为:
{键1:值1,键2:值2,键3:值3,……}
当花括号中没有键值对时,创建的就是一个空字典。
使用内置函数dict()创建字典时,键和值使用“=”进行连接,具体格式为:
dict(键1=值1,键2=值2,键3=值3,……)
调用该方法时通过参数指定所有的Key,所有的value的默认值都是None。
Python为字典提供了一些很实用的内建方法,使用这些方法可以帮助读者在工作中应对涉及字典的问题,简化开发步骤。此外Python还提供了一些字典的常见操作,如表所示。