python开发之路【第三章】:python数字类型与字符串
数字类型
整型
表示整数,包含正数、负数、0。
Python中使用4种进制表示整型,分别为二进制、八进制、十进制和十六进制。
- 0b1010----二进制
- 0o12------八进制
- 10--------十进制
- 0xA-------十六进制
浮点型
表示小数,包含正数、负数,0.0。
浮点数一般以十进制形式表示,对于较大或较小的浮点数,可以使用科学计数法表示。
- num_one = 3.14------# 十进制形式表示
- num_two = 2e2-------# 科学计数法表示
- num_third = 2e-2-----# 科学计数法表示
复数类型
复数有以下3个特点:
- 复数由实部和虚部构成,其一般形式为:real+imagj*1j。
- 实部real和虚部的imag都是浮点型。
- 虚部必须有后缀j或J。
Python中有两种创建复数的方式,一种是按照复数的一般形式直接创建,另一种是通过内置函数complex()创建。
- num_one = 3 + 2j----------------# 直接创建
- num_two = complex(3, 2)--------# 通过内置函数创建
布尔类型
Python中的布尔类型(bool)只有两个取值:True和False。
Python中的任何对象都可以转换为布尔类型,若要进行转换,符合以下条件的数据都会被转换为False:
- None;
- 任何为0的数字类型,如0、0.0、0j;
- 任何空序列,如''''、()、[];
- 任何空字典,如{};
- 用户定义的类实例,如类中定义了__bool__()或者__len__()。
类型转换函数
Python内置了一系列可实现强制类型转换的函数,保证用户在有需求的情况下,将目标数据转换为指定的类型。

- int()函数、float()函数只能转换符合数字类型格式规范的字符串;
- 使用int()函数将浮点数转换为整数时,若有必要会发生截断(取整)而非四舍五入。
点击查看代码
# str -> int
data01 = int("3")
# int -> str
data02 = str(5)
# str -> float
data03 = float("1.2")
# float -> str
data04 = str(1.2)
# int -> float
data05 = float(250)
# float -> int
data06 = int(1.9)
print(data06) # 1 向下取整(截断删除)
字符串
Python支持使用单引号、双引号和三引号定义字符串,其中单引号和双引号通常用于定义单行字符串,三引号通常用于定义多行字符串。
- 使用单引号------'hello world'
- 使用双引号------"hello world"
- 使用三引号------"""my name is itcast
- ----------------------my name is itcast"""
注:定义字符串时单引号与双引号可以嵌套使用,需要注意的是,使用双引号表示的字符串中允许嵌套单引号,但不允许包含双引号,同样,使用单引号表示的字符串中不允许包含单引号。
字符格式化输出
f-strings
f-strings在格式上以f或F引领字符串,字符串中使用{}标明被格式化的变量。
点击查看代码
name = '小淇'
age = 20
gender = '男'
print(f'我的名字是{name},今年{age}岁了,我的性别是:{gender}。')
"我的名字是小淇,今年20岁了,我的性别是:男。"
字符串拼接
字符串的拼接可以直接使用“+”符号实现
点击查看代码
name = "小淇"
print("您好:" + name) # 文本拼接
"您好:小淇"
字符串替换
replace()
字符串的replace()方法可使用新的子串替换目标字符串中原有的子串。
该方法的语法格式如下:
str.replace(old, new, count=None)
- old --- 表示原有子串。
- new --- 表示新的子串。
- count -- 用于设定替换次数。
点击查看代码
name = "我是小淇,我今年20岁了"
print(name.replace("我", "他", 2))
"他是小淇,他今年20岁了"
字符串分割
split()
字符串的split()方法可以使用分隔符把字符串分割成序列。
该方法的语法格式如下:
str.split(sep=None, maxsplit=-1)
- sep ------- 分隔符,默认为空格。
- maxsplit -- 用于设定分割次数。
主:分割后返回的是一个字符串列表
点击查看代码
name = "小淇 小羽"
print(name.split())
['小淇', '小羽']
去除字符串两侧的字符
strip()
字符串对象的strip()方法一般用于去除字符串两侧的空格。
该方法的语法格式如下:
str.strip(chars=None)
- chars -- 要去除的字符,默认为空格
点击查看代码
word = " strip "
print(word.strip())
"strip"
字符串的索引与切片
索引
字符串是一个由元素组成的序列,每个元素所处的位置是固定的,并且对应着一个位置编号,编号从0开始,依次递增1,这个位置编号被称为索引或者下标。
索引自0开始从左至右依次递增,这样的索引称为正向索引;若索引自-1开始,从右至左依次递减,则索引为反向索引。


通过索引可以获取指定位置的字符,语法格式如下:
- 字符串[索引]
当通过索引访问字符串值时,索引的范围不能越界,否则程序会报索引越界的异常。
切片
切片是截取目标对象中一部分的操作,语法格式如下:
- [起始:结束:步长]
切片步长默认为1。注意,切片选取的区间属于左闭右开型,切下的子串包含起始位,但不包含结束位。
点击查看代码
string = "python"
string[0:4:2]
"pt"
运算符
算术运算符
算术运算符包括+、-、*、/、//、%和**,这些运算符都是双目运算符,每个运算符可以与两个操作数组成一个表达式。

Python中的算术运算符支持对相同或不同类型的数字进行混合运算。
点击查看代码
>>> 3 + (3 +2j) # 整型+复数
(6 + 2j)
>>> 3 * 4.5 # 整型+浮点型
13.5
>>> 5.5 - (2 + 3j) # 浮点型-复数
(3.5 - 3j)
>>> True + (1 + 2j) # 布尔类型+复数
(2 + 2j)
Python在对不同类型的对象进行运算时,会强制将对象的类型进行临时类型转换,这些转换遵循如下规律:
- 布尔类型进行算术运算时,被视为数值0或1;
- 整型与浮点型运算时,将整型转化为浮点型;
- 其它类型与复数运算时,将其它类型转换为复数类型。
比较运算符
比较运算符有:==、!=、>、<、>=、<=。比较运算符同样是双目运算符,它与两个操作数构成一个表达式。

增强运算符
“=”是基本的赋值运算符,此外“=”可与算术运算符组合成增强运算符。

逻辑运算符
Python中分别使用or、and、not这三个关键字作为逻辑运算“或”、“与”、“非”的运算符,其中or与and为双目运算符,not为单目运算符。
and(与)
表示并且的关系,类似串联

or(或)
表示或者的关系,类似并联

not(非)
表示取反

运算符优先级
为了避免含有多个运算符的表达式出现歧义,Python为每种运算符都设定了优先级。

默认情况下,运算符的优先级决定了复杂表达式中的哪个单一表达式先执行,但用户可使用圆括号“()”改变表达式的执行顺序。
- 例如:(3+4)*5
练习题
1. 温度转换器:
摄氏度 = (华氏度 - 32) 除以 1.8
在终端中录入摄氏度,计算华氏度
点击查看代码
celsius = float(input("请输入摄氏度数:"))
fahrenheit = celsius * 1.8 + 32
print(f"{celsius}摄氏度等于{fahrenheit:.2f}华氏度")
2. 闰年计算
能够被4整除但是不能被100整除,或者是可以被400整除
终端中输入一个4位年份,输出true或者false
点击查看代码
year = int(input("请输入一个年份:"))
print((year % 4 == 0 and year % 100 != 0) or year % 400 == 0)
3. 单位换算
古代的称 一斤16两 在终端中获取两, 计算是几斤几两
假设: 20两 ==> 1斤4两
点击查看代码
# 1. 获取数据
num = int(input("请输入两数:"))
# 2. 逻辑计算
jin_num = num // 16
liang_num = num % 16
# 3. 格式化输出
print(f"{num}两等于{jin_num}斤{liang_num}两")
4. 计算相加和
在终端中输入一个四位数,计算每一位相加和
- 例如:1234 1+2+3+4=10
- 效果:
- 请输入四位整数:1234
- 结果是:10
点击查看代码
four_numbers = int(input("请输入一个四位整数:"))
# 取个位
ge_wei = four_numbers % 10
# 取十位
shi_wei = four_numbers // 10 % 10
# 取百位
bai_wei = four_numbers // 100 % 10
# 取千位
qian_wei = four_numbers // 1000
total = ge_wei + shi_wei + bai_wei + qian_wei
print("总和是:", total)
浙公网安备 33010602011771号