int(整数类型)str(字符串类型)- 两者之间的转换(这是最常见的操作之一)
- 总结与最佳实践
int (整数类型)
int 用于表示整数,即没有小数部分的数字,Python 的整数类型非常强大,它可以表示任意大小的整数,只受限于你计算机的内存大小,这与其他一些语言(如 C++ 或 Java)中 int 有固定范围(如 -2,147,483,648 到 2,147,483,647)不同。

如何创建 int?
# 直接赋值
a = 10
b = -5
c = 0
# 使用 int() 函数进行转换
d = int("123") # 将字符串 "123" 转换为整数 123
e = int(3.14) # 将浮点数 3.14 转换为整数 3 (直接截断小数部分)
f = int(True) # 将布尔值 True 转换为整数 1
g = int(False) # 将布尔值 False 转换为整数 0
int 类型的常用操作
int 类型支持所有标准的算术运算符:
x = 10 y = 3 # 加法 print(x + y) # 输出: 13 # 减法 print(x - y) # 输出: 7 # 乘法 print(x * y) # 输出: 30 # 除法 (注意:在 Python 3 中,/ 总是返回浮点数) print(x / y) # 输出: 3.3333333333333335 # 整除 (返回商的整数部分) print(x // y) # 输出: 3 # 取余 (返回除法的余数) print(x % y) # 输出: 1 # 乘方 print(x ** y) # 输出: 1000 (10的3次方)
str (字符串类型)
str 用于表示文本数据,在 Python 中,字符串被引号(单引号 、双引号 或三引号 )包围。
如何创建 str?
# 使用单引号 name1 = 'Alice' # 使用双引号 (功能与单引号完全相同) name2 = "Bob" # 使用三引号 (通常用于多行字符串或文档字符串) description = """ 这是一个多行字符串。 它可以跨越多行。 """ # 转义字符 # 如果字符串中需要包含引号,可以使用反斜杠 \ 进行转义 message = "他说:\"Python 很棒!\"" print(message) # 输出: 他说:"Python 很棒!" # 使用 str() 函数进行转换 s1 = str(123) # 将整数 123 转换为字符串 "123" s2 = str(3.14) # 将浮点数 3.14 转换为字符串 "3.14" s3 = str(True) # 将布尔值 True 转换为字符串 "True"
str 类型的常用操作
字符串是不可变的,这意味着一旦创建,就不能修改它的内容,任何对字符串的“修改”操作都会生成一个新的字符串。
连接和拼接
first_name = "John"
last_name = "Doe"
# 使用 + 号进行拼接
full_name = first_name + " " + last_name
print(full_name) # 输出: John Doe
# 使用 f-string (格式化字符串字面量,Python 3.6+ 推荐方式)
# 这是最现代、最易读、最高效的方式
age = 30
greeting = f"你好,{full_name},你今年 {age} 岁了。"
print(greeting) # 输出: 你好,John Doe,你今年 30 岁了。
# 使用 .format() 方法
info = "姓名: {}, 年龄: {}".format(full_name, age)
print(info) # 输出: 姓名: John Doe, 年龄: 30
索引和切片
你可以通过索引来访问字符串中的单个字符,或通过切片来获取子字符串。

s = "Python" # 索引: 0 1 2 3 4 5 # P y t h o n # 索引 (从 0 开始) print(s[0]) # 输出: P print(s[3]) # 输出: h # 负索引 (从 -1 开始,-1 表示最后一个字符) print(s[-1]) # 输出: n print(s[-2]) # 输出: o # 切片 [开始索引:结束索引:步长] # 注意:结束索引本身不包含在内 print(s[1:4]) # 输出: yth (从索引 1 到 3) print(s[:3]) # 输出: Pyt (从开头到索引 2) print(s[2:]) # 输出: thon (从索引 2 到结尾) print(s[::2]) # 输出: Pto (每隔一个字符取一个) print(s[::-1]) # 输出: nohtyP (反转字符串)
常用方法
s = " Hello, World! "
# .lower() - 转换为小写
print(s.lower()) # 输出: hello, world!
# .upper() - 转换为大写
print(s.upper()) # 输出: HELLO, WORLD!
# .strip() - 去除首尾空白字符 (空格, \t, \n)
print(s.strip()) # 输出: Hello, World!
# .replace(old, new) - 替换子字符串
new_s = s.replace("World", "Python")
print(new_s) # 输出: Hello, Python!
# .split(sep) - 分割字符串,返回一个列表
words = s.strip().split(",")
print(words) # 输出: ['Hello', ' World!']
# .find(sub) - 查找子字符串,返回首次出现的索引,找不到则返回 -1
print(s.find("World")) # 输出: 8
# .count(sub) - 计算子字符串出现的次数
print(s.count("l")) # 输出: 3
int 和 str 之间的转换
这是编程中非常常见的场景,尤其是在处理用户输入或文件读写时。
str 转 int
使用 int() 函数,如果字符串不是一个有效的整数表示,会抛出 ValueError 错误。
# 正常情况
num_str = "100"
num_int = int(num_str)
print(num_int) # 输出: 100
print(type(num_int)) # 输出: <class 'int'>
# 错误情况
try:
invalid_num = int("hello")
except ValueError as e:
print(f"错误: {e}") # 输出: 错误: invalid literal for int() with base 10: 'hello'
# 处理浮点数字符串
float_str = "99.9"
# int(float_str) # 这会直接报错,因为 int() 不能直接转换浮点数字符串
# 正确做法是先转成 float,再转成 int
num_from_float = int(float(float_str))
print(num_from_float) # 输出: 99
int 转 str
使用 str() 函数,这个操作总是安全的。
my_age = 25
age_str = str(my_age)
print(age_str) # 输出: '25'
print(type(age_str)) # 输出: <class 'str'>
# 一个常见的应用场景:拼接数字和字符串
# 错误示范 (在 Python 3 中会报错)
# message = "我的年龄是 " + my_age # TypeError: can only concatenate str (not "int") to str
# 正确示范 1: 使用 str() 转换
message1 = "我的年龄是 " + str(my_age)
print(message1) # 输出: 我的年龄是 25
# 正确示范 2: 使用 f-string (推荐)
message2 = f"我的年龄是 {my_age}"
print(message2) # 输出: 我的年龄是 25
总结与最佳实践
| 特性 | int (整数) |
str (字符串) |
|---|---|---|
| 用途 | 表示数值,用于数学计算。 | 表示文本,用于存储和显示信息。 |
| 创建方式 | a = 123 |
b = "hello" |
| 可变性 | 不可变,任何修改操作(如 a += 1)都会创建一个新对象。 |
不可变,任何修改操作(如 b.replace())都会创建一个新字符串。 |
| 主要操作 | , , , , , , (算术运算) | (拼接), (重复), [] (索引), [:] (切片), .lower(), .upper(), .strip() 等 |
| 类型转换 | int("123"), int(3.14) |
str(123), str(3.14) |
最佳实践
-
不要用 拼接大量字符串:在循环中使用 来拼接大量字符串是非常低效的,因为每次拼接都会创建一个新的字符串对象,推荐使用
str.join()方法或f-string。
(图片来源网络,侵删)# 低效 result = "" for i in range(1000): result += str(i) # 高效 result = "".join(str(i) for i in range(1000)) -
优先使用 f-string 进行格式化:自 Python 3.6 起,f-string 是最简洁、最易读且性能最好的字符串格式化方式。
name = "Charlie" score = 95 print(f"学生 {name} 的得分是 {score}。") # 推荐 print("学生 {} 的得分是 {}。".format(name, score)) # 可用 print("学生 %s 的得分是 %d。" % (name, score)) # 较老的方式 -
处理用户输入时,始终进行类型转换和错误处理:从
input()函数获取的输入永远是字符串类型,如果需要进行数学计算,必须先用int()或float()进行转换,并用try-except来处理可能发生的错误。try: user_input = input("请输入一个整数: ") number = int(user_input) print(f"你输入的数字的平方是 {number ** 2}") except ValueError: print("输入无效,请确保输入的是一个整数。")
