float() 参数必须是字符串或实数,而不是 X

目录

float() argument must be a string or a real number, not list

  1. float() 参数必须是字符串或实数,而不是列表
  2. float() 参数必须是字符串或实数,而不是 NoneType
  3. float() 参数必须是字符串或实数,而不是方法

float() 参数必须是字符串或实数,而不是列表

当我们将列表传递给类时,会出现 Python“TypeError: float() argument must be a string or a real number, not ‘list’” float()

要解决该错误,请访问列表中的特定项目并将该项目传递给类float(),例如float(my_list[0]).

float 参数必须是字符串或实数而不是列表

下面是错误如何发生的示例。

主程序
my_list = ['1.1', '2.2', '3.3'] # ⛔️ TypeError: float() argument must be a string or a real number, not 'list' result = float(my_list)

我们将整个列表传递给导致错误的float()类。

访问特定索引处的列表以解决错误

解决错误的一种方法是访问特定索引处的列表并将该项目传递给类float()

主程序
my_list = ['1.1', '2.2', '3.3'] result = float(my_list[0]) print(result) # 👉️ 1.1

我们访问索引处的列表0并使用该类float()将值转换为浮点数。

索引是0基于索引的,因此列表中的第一项的索引为0,最后一项的索引为-1

将列表中的所有值转换为浮点数

如果您打算将列表中的所有项目转换为浮点数,
请使用 list comprehension

主程序
my_list = ['1.1', '2.2', '3.3'] new_list = [float(x) for x in my_list] print(new_list) # 👉️ [1.1, 2.2, 3.3]

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。

我们将列表中的每个字符串传递给类float()以将每个项目转换为整数。

或者,您可以使用该map()功能。

主程序
my_list = ['1.1', '2.2', '3.3'] new_list = list(map(float, my_list)) print(new_list) # 👉️ [1.1, 2.2, 3.3]

map ()函数将一个函数和一个可迭代对象作为参数,并使用可迭代对象的每个项目调用该函数。

我们将float()类传递给map(),因此该类将列表中的每个值作为参数传递,并将其转换为浮点数。

最后一步是将
地图对象转换为列表

  1. float() 参数必须是字符串或实数,而不是 NoneType
  2. float() 参数必须是字符串或实数,而不是方法

float() 参数必须是字符串或实数,而不是 NoneType

None当我们将值传递给类时,会出现 Python“TypeError: float() argument must be a string or a real number, not ‘NoneType’” float()

要解决该错误,请更正分配或提供回退值。

float 参数必须是字符串或实数而不是非类型

下面是错误如何发生的示例。

主程序
example = None # ⛔️ TypeError: float() argument must be a string or a real number, not 'NoneType' result = float(example)

我们正在将一个None值传递给float()导致错误的类。

Python 中 None 的常见来源

最常见的None价值来源是:

  1. 有一个不返回任何东西的函数(None隐式返回)。
  2. 将变量显式设置为None.
  3. 将变量分配给调用不返回任何内容的内置函数的结果。
  4. 具有仅在满足特定条件时才返回值的函数。

如果变量为 None,则提供默认值

解决错误的一种方法是提供回退值,例如,0如果变量存储None.

主程序
example = None result = float(example or 0) print(result) # 👉️ 0.0

该表达式检查示例变量是否存储了一个假值,如果是则0返回。

不返回值的函数返回 None

不显式返回值的函数 return None

主程序
# 👇️ this function returns None def get_str(): print('3.14') # ⛔️ TypeError: float() argument must be a string or a real number, not 'NoneType' result = float(get_str())

您可以使用return 语句从函数返回值。

主程序
def get_str(): return '3.14' result = float(get_str()) print(result) # 👉️ 3.14

检查变量是否不存储 None 值

如果在将变量传递给类之前if需要检查变量是否未存储值,
请使用语句
Nonefloat()

主程序
example = None if example is not None: result = float(example) print(result) else: # 👇️ this runs print('variable stores a None value')

或者,您可以将变量重新分配给后备值。

主程序
example = None if example is None: example = 0 result = float(example) print(result) # 👉️ 0.0

如果变量等于Noneif块运行并将其设置为0

只在满足条件时才返回值的函数

错误的另一个常见原因是具有仅在满足条件时才返回值的函数。

主程序
def get_num(a): if a > 15: return a my_num = get_num(10.5) print(my_num) # 👉️ None

if函数中的块get_num在传入的数字大于 时运行15

在所有其他情况下,该函数不返回任何内容并最终隐式返回None

要解决错误,您要么必须检查函数是否未返回
None,要么在不满足条件时返回默认值。

主程序
def get_num(a): if a > 15: return a return 0 # 👈️ return fallback if condition not met my_num = get_num(10.5) print(my_num) # 👉️ 0

现在,无论条件是否满足,函数都保证返回一个值。

float() 参数必须是字符串或实数,而不是方法

当我们将方法传递给类时,会出现 Python“TypeError: float() argument must be a string or a real number, not ‘method’” float()

要解决该错误,请确保调用带有括号的方法,例如
my_method().

float 参数必须是字符串或实数而不是方法

下面是错误如何发生的示例。

主程序
class MyClass(): def get_str(self): return '3.14' m = MyClass() # ⛔️ TypeError: float() argument must be a string or a real number, not 'method' result = float(m.get_str) # 👈️ forgot to call method
我们忘记用括号调用方法,例如m.get_str(),所以我们的代码实际上试图将方法转换为浮点数。

调用解决错误的方法

要解决错误,请确保调用该方法。

主程序
class MyClass(): def get_str(self): return '3.14' e = MyClass() # ✅ call method() with parentheses result = float(e.get_str()) print(result) # 👉️ 3.14

我们使用括号来调用方法,所以现在我们的代码将方法的返回值转换为浮点数。

如果您的方法需要参数,请确保在调用它时提供它们,例如my_obj.my_method(10, 20).

检查变量存储的类型

如果您不确定变量存储的对象类型,请使用类type()

主程序
class MyClass(): def get_str(self): return '3.14' e = MyClass() print(type(e.get_str)) # 👉️ <class 'method'> print(callable(e.get_str)) # 👉️ True my_float = 3.14 print(type(my_float)) # 👉️ <class 'float'> print(isinstance(my_float, float)) # 👉️ True

类型

返回对象的类型。

如果传入的对象是传入类的实例或子类,则isinstance函数返回
True

调用函数将一个对象作为参数,True如果该对象看起来可调用则返回,否则False返回。

如果callable()函数返回True,调用对象仍有可能失败,但是,如果返回False,调用对象将永远不会成功。