杰瑞科技汇

Python中int与string类型如何转换?

  1. int (整数类型)
  2. str (字符串类型)
  3. 两者之间的转换(这是最常见的操作之一)
  4. 总结与最佳实践

int (整数类型)

int 用于表示整数,即没有小数部分的数字,Python 的整数类型非常强大,它可以表示任意大小的整数,只受限于你计算机的内存大小,这与其他一些语言(如 C++ 或 Java)中 int 有固定范围(如 -2,147,483,648 到 2,147,483,647)不同。

Python中int与string类型如何转换?-图1
(图片来源网络,侵删)

如何创建 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

索引和切片

你可以通过索引来访问字符串中的单个字符,或通过切片来获取子字符串。

Python中int与string类型如何转换?-图2
(图片来源网络,侵删)
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

intstr 之间的转换

这是编程中非常常见的场景,尤其是在处理用户输入或文件读写时。

strint

使用 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

intstr

使用 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)

最佳实践

  1. 不要用 拼接大量字符串:在循环中使用 来拼接大量字符串是非常低效的,因为每次拼接都会创建一个新的字符串对象,推荐使用 str.join() 方法或 f-string

    Python中int与string类型如何转换?-图3
    (图片来源网络,侵删)
    # 低效
    result = ""
    for i in range(1000):
        result += str(i)
    # 高效
    result = "".join(str(i) for i in range(1000))
  2. 优先使用 f-string 进行格式化:自 Python 3.6 起,f-string 是最简洁、最易读且性能最好的字符串格式化方式。

    name = "Charlie"
    score = 95
    print(f"学生 {name} 的得分是 {score}。") # 推荐
    print("学生 {} 的得分是 {}。".format(name, score)) # 可用
    print("学生 %s 的得分是 %d。" % (name, score)) # 较老的方式
  3. 处理用户输入时,始终进行类型转换和错误处理:从 input() 函数获取的输入永远是字符串类型,如果需要进行数学计算,必须先用 int()float() 进行转换,并用 try-except 来处理可能发生的错误。

    try:
        user_input = input("请输入一个整数: ")
        number = int(user_input)
        print(f"你输入的数字的平方是 {number ** 2}")
    except ValueError:
        print("输入无效,请确保输入的是一个整数。")
分享:
扫描分享到社交APP
上一篇
下一篇