类型错误:浮点对象不能解释为整数

目录

TypeError: float object cannot be interpreted as an integer

  1. TypeError: ‘FLOAT’ 对象不能解释为整数
  2. 类型错误:“STR”对象不能解释为整数

TypeError: 浮点对象不能解释为整数

当我们将浮点数传递给需要整数参数的函数时,会出现 Python“TypeError: ‘float’ object cannot be interpreted as an integer”。

要解决该错误,请使用楼层除法运算符,例如
for i in range(my_num // 5):

typeerror 浮点对象不能解释为整数

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

主程序
my_num = 50 print(my_num / 5) # 👉️ 10.0 (float) # ⛔️ TypeError: 'float' object cannot be interpreted as an integer for i in range(my_num / 5): print(i)

除法运算符/总是产生一个浮点值,但该range()函数需要一个整数。

浮点数在小数点后有一位或多位数字,而整数没有小数点。

主程序
print(type(10.0)) # 👉️ <class 'float'> print(type(10.5)) # 👉️ <class 'float'> print(type(5)) # 👉️ <class 'int'> print(type(13)) # 👉️ <class 'int'>

使用楼层除法运算符解决错误

要解决该错误,请使用
floor 除法运算//而不是除法运算/符。

主程序
my_num = 50 # ✅ using floor division for i in range(my_num // 5): print(i) print(my_num / 5) # 👉️ 10.0 (float) print(my_num // 5) # 👉️ 10 (int) # ✅ or convert to int print(int(10.0)) # 👉️ 10 (int)

整数除法/产生一个浮点数,而//整数除法产生一个整数。

使用 floor 除法运算符的结果是对floor()结果应用函数的数学除法。

调用函数时将浮点数转换为整数

或者,您可以通过将 float 传递给int()
构造函数来将其转换为 int。

主程序
my_num = 50 # ✅ convert float to int for i in range(int(my_num / 5)): print(i) print(int(10.0)) # 👉️ 10 print(int(5.0)) # 👉️ 5

int类返回一个由提供的数字或字符串参数构造的整数对象

0如果没有给出参数,则构造函数返回。

range函数通常用于在for 循环中循环特定次数,并采用以下参数:

姓名 描述
start 表示范围开始的整数(默认为0
stop 向上,但不包括提供的整数
step 范围将由每 N 个数字组成,从startstop(默认为1
主程序
print(list(range(5))) # 👉️ [0, 1, 2, 3, 4] print(list(range(1, 5))) # 👉️ [1, 2, 3, 4]

如果您只将单个参数传递给range()构造函数,则它被认为是参数的值stop

通过四舍五入将浮点数转换为整数

您还可以通过四舍五入将浮点数转换为整数。

主程序
my_float = 3.51 for i in range(round(my_float)): print(i) # 0, 1, 2, 3 print(round(my_float)) # 👉️ 4

round函数采用以下 2 个参数:

姓名 描述
number ndigits要舍入到小数点后精度的数字
ndigits 小数点后的位数,运算后的数字应该有(可选)

该函数返回四舍五入到小数点后的精度的round数字。ndigits

如果ndigits省略,函数返回最接近的整数。

如果需要向上或向下舍入浮点数,可以使用math.ceil()or方法。math.floor()

主程序
import math my_float = 3.51 rounded_up = math.ceil(my_float) print(rounded_up) # 👉️ 4 rounded_down = math.floor(my_float) print(rounded_down) # 👉️ 3

math.ceil

方法返回大于或等于提供的数字的最小整数

math.floor方法返回小于或等于提供的数字的最大整数

如果您在不同的场景中遇到错误,则必须通过将浮点参数传递给构造函数来将其转换为整数int()

使用numpy.arange来解决错误

range()不能用浮点数调用本机函数,但可以numpy.arange用一个浮点数调用方法。

主程序
import numpy as np my_float = 3.5 for i in np.arange(my_float): # 0.0 # 1.0 # 2.0 # 3.0 print(i)

numpy.arange

方法将
,和values 作为参数
就像
函数一样。
startstopsteprange()

但是,numpy.arange处理浮点值。

如果需要安装 numpy,请在项目的根目录中打开终端并运行以下命令。

pip install numpy pip3 install numpy

错误地重新分配一个变量

确保您没有声明最初存储整数的变量并在代码中的某处覆盖它。

主程序
my_int = 50 # 👇️ reassigned variable to a float by mistake my_int = 5.6 # ⛔️ TypeError: 'float' object cannot be interpreted as an integer for i in range(my_int): print(i)

我们最初将my_int变量设置为整数,但后来将其重新分配给导致错误的浮点数。

TypeError: ‘str’ 对象不能解释为整数

当我们将字符串传递给需要整数参数的函数时,会出现 Python“TypeError: ‘str’ object cannot be interpreted as an integer”。

要解决该错误,请在函数调用中将字符串转换为整数。

typeerror str 对象不能解释为整数

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

主程序
# 👇️ this is a string my_num = '5' # ⛔️ TypeError: 'str' object cannot be interpreted as an integer for i in range(my_num): print(i)

We passed a string to the range() constructor which expects an integer
argument.

# Convert the string to an integer in the call to the function

To solve the error, use the int() class to convert the string to an integer.

main.py
my_num = '5' for i in range(int(my_num)): print(i)

The int() class returns an integer object constructed from the provided number
or string argument.

main.py
print(int('5')) # 👉️ 5 (integer) print(int('3')) # 👉️ 3 (integer)

# The input() function always returns a string

The error often occurs when taking input from the user with the built-in
input() function.

main.py
# 👇️ this is a string num = input('Enter your fav number: ') print(num) print(type(num)) # 👉️ <class 'str'> # ⛔️ TypeError: 'str' object cannot be interpreted as an integer for i in range(num): print(i)

输入函数总是返回字符串

The input function converts the supplied value
to a string and returns it.

The input() function is guaranteed to return a string even if the user enters
an integer.

Use the int() constructor to convert the value to an integer to solve the
error.

main.py
num = input('Enter your fav number: ') print(num) print(type(num)) # 👉️ <class 'str'> # ✅ Convert str to integer for i in range(int(num)): print(i)

将输入转换为整数

The int() class returns an integer object constructed from the provided number
or string argument.

The constructor returns 0 if no arguments are given.

main.py
print(int('10')) # 👉️ 10 print(int('5')) # 👉️ 5

The range constructor is commonly used for
looping a specific number of times in for loops and takes the following
parameters:

Name Description
start An integer representing the start of the range (defaults to 0)
stop Go up to, but not including the provided integer
step Range will consist of every N numbers from start to stop (defaults to 1)
main.py
print(list(range(3))) # 👉️ [0, 1, 2] print(list(range(1, 4))) # 👉️ [1, 2, 3]

If you only pass a single argument to the range() constructor, it is
considered to be the value for the stop parameter.

错误地将变量重新分配给字符串

确保您没有声明最初存储整数的变量并在代码中的某处覆盖它。

主程序
my_int = 10 # 👇️ reassigned variable to a string by mistake my_int = '30' # ⛔️ TypeError: 'str' object cannot be interpreted as an integer for i in range(my_int): print(i)

我们最初将my_int变量设置为整数,但后来将其重新分配为字符串。

在这种情况下,您必须追踪变量设置为字符串的位置并更正分配。