Python第五章 数据类型
python第五章 数据类型
【说明】本章只讲解数据类型,置于数据类型相关的操作在第四章 基础语法中介绍了
5.1 字符串
5.1.1 字符串的表示
字符串有3种不同的定义方式:
- 双引号定义法:"字符串"
- 单引号定义法:'字符串'
- 三引号定义法(多行字符串): """多行字符串"""
str1 = 'hello, world1'
str2 = "hello, world2"
str3 = """
hello,
world3
"""
print(str1)
print(str2)
print(str3)
【规范】单引号包围的也是字符串,不过一般常用双引号,这样比较规范
5.1.2 字符串拼接
1、字符串字面量之间的拼接
# 1. 两个字符串字面量拼接
print("str1 " + "str2") # str1 str2
2、字符串字面量和字符串变量之间拼接
# 2. 字符串字面量和字符串变量拼接
str_val = "str3"
print(str_val + " str4") # str3 str4
【注意】字符串无法和非字符串变量进行拼接,这和Java是不一样的
int_val = 123
print("int = " + int_val)
错误:TypeError: can only concatenate str (not "int") to str
当然可以类型转换之后进行拼接
int_val = 123
print("int = " + str(int_val)) # int = 123
拼接字符串的缺点
- 变量过多,拼接字符串太麻烦
- 字符串无法和数字或者其他类型完成拼接
因此引出下面的字符串格式化
5.1.3 字符串格式化
字符串格式化有两种方式
- 语法1:
"占位符" % val
- 语法2:
f"字符串{val}"
下面逐一展示
(1) "占位符" % val
语法1
"占位符" % val
常用的占位符
格式符号 | 转化 |
---|---|
%s | 将内容转换成字符串,放入占位位置 |
%d | 将内容转换成整数,放入占位位置 |
%f | 将内容转换成浮点型,放入占位位置 |
1、一个占位符,不需要()
name = "张三"
desc = "我的名字是%s" % name
print(desc) # 我的名字是张三
2、多个占位符用()围住变量
name = "张三"
age = 14
weight = 59.5
desc = "我的名字是%s,我的年龄是%d,我的体重是%f" % (name, age, weight)
# 我的名字是张三,我的年龄是14,我的体重是59.500000
print(desc)
【说明】
- 任何类型都可以使用%s占位符,都会将原类型转换成字符串
- 浮点数转换默认精度6位小数
精度控制
这种语法可以精度控制
我们可以使用辅助符号"m.n"来控制数据的宽度和精度
- m,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效
- .n,控制小数点精度,要求是数字,会进行小数的四舍五入
示例:
-
%5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度。
-
%5.2f:表示将宽度控制为5,将小数点精度设置为2
小数点和小数部分也算入宽度计算。如,对11.345设置了%7.2f 后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为 .35
-
%.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35
num1 = 11
num2 = 12.345
print("数字11宽度限制5,结果:%5d" % num1) # 数字11宽度限制5,结果: 11
print("数字11宽度限制1,结果:%1d" % num1) # 数字11宽度限制1,结果:11
print("数字12.345宽度限制7,小数精度2,结果:%7.2d" % num2) # 数字12.345宽度限制7,小数精度2,结果: 12
print("数字12.345不限制宽度,小数精度2,结果:%.2d" % num2) # 数字12.345不限制宽度,小数精度2,结果:12
【说明】设置了宽度之后,超出宽度的小数就不显示了
(2) f"字符串{val}"
特点:不限数据类型,不做精度控制,适用于快速格式化字符串
f"{变量} {变量}"的方式进行快速格式化
name = "张三"
age = 14
weight = 59.5
print(f"我的名字是{name},我的年龄是{age}, 我的体重是{weight}kg")
# 我的名字是张三,我的年龄是14, 我的体重是59.5kg
除了对上面的变量进行格式化,还可以对表达式进行格式化
【概念】表达式:一条具有明确执行结果的代码语句,一般=右边的都可以是表达式,比如字面量,算式,有返回值的方法等
print(f"我的年龄是{12}, 我的体重是{59 + 0.5}kg") # 我的年龄是12, 我的体重是59.5kg
在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码
下面是一个练习
输入基本信息,然后格式化字符串,最后的数值要保留小数
name = "company1"
stock_price = 19.99
stock_code = 123456
stock_price_daily_growth_factor = 1.2
growth_days = 7
desc = f"""公司:{name}, 股票代码:{stock_code}, 当前股价:{stock_price}
每日增长系数:{stock_price_daily_growth_factor}, 经过{growth_days}天的增长后,股价达到了:{"%.2f" % (stock_price * (stock_price_daily_growth_factor ** growth_days))}
"""
print(desc)
# 公司:company1, 股票代码:123456, 当前股价:19.99
# 每日增长系数:1.2, 经过7天的增长后,股价达到了:71.62
5.2 bool类型
- True表示真
- False表示假
True本质上是一个数字记作1,False记作0
bool_val1 = True
bool_val2 = False
print(bool_val1, type(bool_val1)) # True <class 'bool'>
print(bool_val2, type(bool_val2)) # False <class 'bool'>
字符串的比较
print("str1" == "str2") # False
print("str1" == "str1") # True
【说明】字符串的比较是直接比较值的
5.3 None类型
【None类型的应用场景】
1、用在if判断上
- 在if判断中,None等同于False
- 一般用于在函数中主动返回None,配合if判断做相关处理
def is_mature(age):
if age > 18:
return "SUCCESS"
else:
return None
result = is_mature(12)
# 如果result不是True的话,表明是未成年
if not result:
print("未成年,不可以进入")
【说明】None相当于False,not None就是True的意思
2、用于声明无内容的变量上
定义变量,但暂时不需要变量有具体值,可以用None来代替
name = None