一、Python中的占位符与字符串格式化
1. 占位符格式化(传统方式)
Python提供了多种字符串格式化的方式,其中最传统的是使用占位符:
语法规则
格式化字符串 % 参数1
# 或者
格式化字符串 % (参数1, 参数2, 参数3)
# 基本占位符使用
name = "张三"
age = 25
print("姓名: %s, 年龄: %d" % (name, age))
# 常用占位符类型:
# %s - 字符串
# %d - 十进制整数
# %f - 浮点数
# %o - 八进制整数
# %x - 十六进制整数
# %% - 百分号本身
str = """
甲方:________%s__________
乙方:________%s__________
金额:__%d__
"""
s = str % ("小王", "小李",10000)
print(s)
# 控制浮点数精度
pi = 3.1415926
print("π的值是: %.2f" % pi) # 输出: π的值是: 3.14
# 数字格式化
num = 12345
print("数字: %08d" % num) # 输出: 数字: 00012345
2. f-string(Python 3.6+推荐)
f-string是Python 3.6引入的字符串格式化方法,更加简洁直观:
f-string 格式化字符串以 f 开头,字符串中的表达式用 {} 包起来。
# 基本f-string使用
# 以 f 或 F 开头,用大括号 {} 包裹变量或表达式
# : 是格式说明符的开始符号
name = "李四"
age = 30
print(f"姓名: {name}, 年龄: {age}")
# 表达式计算
a, b = 5, 3
print(f"{a} + {b} = {a + b}") # 输出: 5 + 3 = 8
# 格式化数字
pi = 3.1415926
# .2 表示保留 2 位小数,会四舍五入到指定精度
print(f"π的值是: {pi:.2f}") # 输出: π的值是: 3.14
# 对齐与填充
num = 42
# 变量名:自定义填充字符(可以是空格)>/<宽度数
print(f"数字: {num:0>5}") # 输出: 数字: 00042 (右对齐:> )
print(f"数字: {num:<5}") # 输出: 数字: 42 (左对齐: < )
# 总结:向哪边对齐,尖口对那边
二、Python数字类型详解
1. 整数(int)
Python中的整数没有大小限制(仅受内存限制):
# 基本整数
a = 10
b = -5
c = 0
# 不同进制表示
binary = 0b1010 # 二进制 10
octal = 0o12 # 八进制 10
hexadecimal = 0xA # 十六进制 10
# 大整数
big_num = 123456789012345678901234567890
print(big_num + 1) # Python可以轻松处理大整数
# 整数运算 还有 加+ 减- 乘* 除/
print(7 // 3) # 整除: 2
print(7 % 3) # 取余: 1
print(2 ** 3) # 幂运算: 8
2. 浮点数(float)
浮点数用于表示实数,但有精度限制:
# 基本浮点数
f1 = 3.14
f2 = -0.001
f3 = 2.0 # 虽然是整数形式,但有小数点就是浮点数
# 科学计数法
sci = 1.23e-4 # 0.000123
sci1 = 2.9979E8 # 等同于 299790000.0
# 浮点数精度问题(注意这是二进制浮点数的普遍问题)
print(0.1 + 0.2) # 输出: 0.30000000000000004
# 浮点数运算
print(7 / 3) # 除法: 2.333...
print(round(3.14159, 2)) # 四舍五入: 3.14
3. 布尔类型(bool)
布尔类型是整型的子类,只有两个值:True
和False
:
Bool
-
表示真假、对错、黑白等;
-
只有2个值True和False;
-
类型转换使用bool()方法
-
非0都是True
-
0、0.0、-0.0、空字符串、空列表、空字典、空集合、空元组、None等都是False;
提示:后面学的与运算会用到这个
# 基本布尔值
t = True
f = False
# 布尔运算
print(True and False) # False and:两个都要为true,如果第一个是false就不会运算第二个代码块
print(True or False) # True or:只要有一个true就为true
print(not True) # False
# 布尔值实际上是整数
print(True == 1) # True
print(False == 0) # True
print(True + 1) # 2
# 其他类型转布尔
print(bool(1)) # True
print(bool(0)) # False
print(bool("")) # False
print(bool("abc")) # True:转换成asc码后不为0
4. 复数(complex)
Python原生支持复数类型:
# 基本复数
c1 = 3 + 4j
c2 = complex(2, -3) # 2 - 3j
# 复数运算
print(c1 + c2) # (5+1j)
print(c1 * c2) # (18-1j)
print(c1.conjugate()) # 共轭复数(实部不变,虚部取反): (3-4j)
print(abs(c1)) # 模: 5.0
# 获取实部和虚部
print(c1.real) # 3.0
print(c1.imag) # 4.0
5. 数字类型转换
Python数字类型之间可以相互转换:
# 整数与浮点数转换
i = 10
f = float(i) # 10.0
i2 = int(3.9) # 3 (截断小数部分)
# 字符串转数字
s = "123"
n = int(s) # 123
f = float("3.14") # 3.14
# 字母/符号/标点转数字
w = 'a' # 字符要用引号包围,且只能有一个字符,不能多个
o = ord(w) # ord()函数
print(o) # 输出: 97('a'的Unicode码点)
# 反向操作
print(chr(97)) # 'a'
print(chr(23383)) # '字'
# 布尔值转换
print(int(True)) # 1
print(float(False)) # 0.0
# 复数转换(注意不能直接转为int或float)
c = 3+4j
# int(c) # 会报错
三、字节串(bytes)
字节串用于处理二进制数据:
# 创建字节串
b1 = b'hello' # 只能包含ASCII字符
b2 = bytes([65, 66, 67]) # b'ABC'
# 字符串转字节串
s = "你好"
b = s.encode('utf-8') # b'\xe4\xbd\xa0\xe5\xa5\xbd'
# 字节串转字符串
s2 = b.decode('utf-8') # "你好"
# 字节串操作
print(b1[0]) # 104 (h的ASCII码)
print(b1 + b2) # b'helloABC'
print(len(b1)) # 5:输出字符串b1的长度
# 十六进制表示
hex_bytes = bytes.fromhex('2Ef0 F1f2') # b'.\xf0\xf1\xf2'
print(hex_bytes.hex()) # '2ef0f1f2'
四、空值(None)
None
是Python中表示空值的特殊类型:
# None的基本使用
var = None
print(var) # None
# None与其他值的比较
print(None == None) # True
print(None == False) # False
print(None == 0) # False
# 函数默认返回值
def do_nothing():
pass
result = do_nothing()
print(result) # None
# 作为默认参数
def greet(name=None):
if name is None:
print("Hello, stranger!")
else:
print(f"Hello, {name}!")
greet() # Hello, stranger!
greet("Alice") # Hello, Alice!
五、常见API总结
数字类型常用方法:
# 绝对值
abs(-5) # 5
# 最大值/最小值
max(1, 3, 2) # 3
min([4, 2, 5]) # 2
# 幂运算
pow(2, 3) # 8
# 四舍五入
round(3.14159, 2) # 3.14
# 数学运算
import math
math.sqrt(16) # 4.0
math.sin(math.pi/2) # 1.0
字节串常用方法:
# 1. str.lower(): 将字符串转换为小写
text = "Hello, World!"
print(text.lower()) # 输出: hello, world!
# 2. str.upper(): 将字符串转换为大写
text = "Hello, World!"
print(text.upper()) # 输出: HELLO, WORLD!
# 3. str.strip(): 移除字符串两端的空白字符
text = " Hello, World! "
print(text.strip()) # 输出: Hello, World!
# 4. str.split(): 将字符串拆分为列表
text = "Hello, World!"
print(text.split()) # 输出: ['Hello,', 'World!']
text = "Hello,World!"
print(text.split(',')) # 输出: ['Hello', 'World!']
# 5. str.join(): 将列表中的字符串连接为一个字符串
words = ['Hello', 'World']
print(" ".join(words)) # 输出: Hello World
words = ['apple', 'banana', 'cherry']
print(", ".join(words)) # 输出: apple, banana, cherry
# 6. str.replace(): 替换字符串中的子字符串
text = "Hello, World!"
print(text.replace("World", "Python")) # 输出: Hello, Python!
# 7. str.find(): 查找子字符串,返回第一次出现的位置
text = "Hello, World!"
print(text.find("World")) # 输出: 7
print(text.find("Python")) # 输出: -1(如果未找到则返回 -1)
# 8. str.startswith(): 检查字符串是否以指定子字符串开头
text = "Hello, World!"
print(text.startswith("Hello")) # 输出: True
print(text.startswith("World")) # 输出: False
# 9. str.endswith(): 检查字符串是否以指定子字符串结尾
text = "Hello, World!"
print(text.endswith("World!")) # 输出: True
print(text.endswith("Hello")) # 输出: False
# 10. str.isdigit(): 检查字符串是否只包含数字字符
text1 = "12345"
text2 = "12345abc"
print(text1.isdigit()) # 输出: True
print(text2.isdigit()) # 输出: False
# 11. str.isalpha(): 检查字符串是否只包含字母字符
text1 = "Hello"
text2 = "Hello123"
print(text1.isalpha()) # 输出: True
print(text2.isalpha()) # 输出: False
# 12. str.isalnum(): 检查字符串是否只包含字母和数字字符
text1 = "Hello123"
text2 = "Hello 123"
print(text1.isalnum()) # 输出: True
print(text2.isalnum()) # 输出: False
# 13. str.title(): 将字符串中的每个单词的首字母转换为大写
text = "hello, world!"
print(text.title()) # 输出: Hello, World!
# 14. str.capitalize(): 将字符串的首字母转换为大写
text = "hello, world!"
print(text.capitalize()) # 输出: Hello, world!
# 15. str.count(): 计算子字符串在字符串中出现的次数
text = "Hello, World! Hello, Python!"
print(text.count("Hello")) # 输出: 2
print(text.count("Python")) # 输出: 1
# 16. str.format(): 格式化字符串
name = "John"
age = 30
print("My name is {} and I am {} years old.".format(name, age))
# 输出: My name is John and I am 30 years old.
print(f"My name is {name} and I am {age} years old.")
# 输出: My name is John and I am 30 years old. (使用 f-string)
六、总结
Python提供了丰富的基础数据类型,掌握这些类型及其操作方法对于Python编程至关重要:
-
字符串格式化:优先使用f-string,简洁高效
-
数字类型:包括整数、浮点数、布尔值和复数,各有特点
-
字节串:处理二进制数据的关键类型
-
空值:None在Python中表示空值,有特殊用途
理解这些基础数据类型后,你将能够更自如地进行Python编程,并为学习更复杂的数据结构打下坚实基础。