跳转到主要内容
模块 4 · 第 4 课(共 4)课程中的16/36~10 min
模块课程(4/4)

类型转换

Python 是强类型:它永远不会将字符串添加到数字中,除非您 这么说吧。要从一种类型转换为另一种类型,可以使用构造函数: int()、float()、str()、bool()、list()、tuple()、set()。

Python
int("42")        # 42
float("3.14")    # 3.14
str(42)          # '42'
list("abc")      # ['a', 'b', 'c']
tuple([1, 2])    # (1, 2)
set([1, 1, 2])   # {1, 2}

带有字符串的 int()

int("42") 有效; int("42.5") 引发 ValueError。对于十进制字符串, 首先遍历 float: int(float("42.5")) → 42 (截断,不 圆)。

Python
int("42")         # 42
int("  42  ")     # 42        (strip automatico degli spazi)
int("42.5")       # ValueError
int(float("42.5"))  # 42
int("ff", 16)     # 255       (base esplicita)

带有字符串的 float()

接受十进制和科学记数法。

Python
float("3.14")      # 3.14
float("1e3")       # 1000.0
float("inf")       # inf
float("nan")       # nan

str():“友好”转换

str(x) 内部调用 x.__str__() 来获取“人类”表示。 还有 repr(x) 用于“调试器”表示,通常更多 显式(带字符串引号等)。

Python
str(3.14)       # '3.14'
str([1, 2])     # '[1, 2]'
str(True)       # 'True'

bool() 和真实性

bool(x) 仅针对 Python 的 falsy 值返回 False:

  • False、None
  • 零数字:0、0.0
  • 空容器:""、[]、()、{}、set()

其他一切都是真实。

Python
bool(0)       # False
bool("")      # False
bool([])      # False
bool("0")     # True  !  (stringa non vuota)
bool([0])     # True  !  (lista non vuota, anche se contiene 0)

模式:安全输入解析

Python
testo = input("età: ")
try:
    eta = int(testo)
except ValueError:
    print(f"non è un numero: {testo!r}")
    eta = None

布尔评估(真实性)

在Python中,每个对象都有一个隐含的真值。您可以使用 bool(...) 函数检查任何对象的布尔值。空集合(例如 ""、[]、{}、set())和零值(0、0.0)始终计算为 False。所有其他对象的计算结果为 True。

尝试一下

锻炼#python.m4.l4.e1
尝试:0加载中...

给定 `a = '10'` 和 `b = '32'` (字符串),计算 `total` 作为它们的整数和。评估“总计”。

正在加载编辑器...
显示提示

int(a) + int(b),否则连接字符串。

3 次尝试后可用的解决方案

复习练习

锻炼#python.m4.l4.e2
尝试:0加载中...

给定列表 `values = ['', 'x', 0, None, 1, []]`,使用 bool() 仅使用 true 元素构建 `truthy`。评价‘真实’。

正在加载编辑器...
显示提示

使用过滤器 bool(v) (或只是“if v”)进行列表理解。

3 次尝试后可用的解决方案

额外的挑战

锻炼#python.m4.l4.e3
尝试:0加载中...

给定字符串列表 \`string_numbers = ["1", "2", "3"]\`,使用 int()\` 将每个元素转换为整数,并将它们加在一起以获得值 \`6\`。将总和存储在“sum_val”中并对其进行评估。

正在加载编辑器...
显示提示

通过索引访问元素,例如int(string_numbers[0]),并对它们求和。

3 次尝试后可用的解决方案