目录
TypeError: float object cannot be interpreted as an integer
TypeError: 浮点对象不能解释为整数
当我们将浮点数传递给需要整数参数的函数时,会出现 Python“TypeError: ‘float’ object cannot be interpreted as an integer”。
要解决该错误,请使用楼层除法运算符,例如
for i in range(my_num // 5):
。
下面是错误如何发生的示例。
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()
结果应用函数的数学除法。调用函数时将浮点数转换为整数
或者,您可以通过将 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 个数字组成,从start 到stop (默认为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 作为参数,就像
函数一样。start
stop
step
range()
但是,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”。
要解决该错误,请在函数调用中将字符串转换为整数。
下面是错误如何发生的示例。
# 👇️ 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.
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.
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.
# 👇️ 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.
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.
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 ) |
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
变量设置为整数,但后来将其重新分配为字符串。
在这种情况下,您必须追踪变量设置为字符串的位置并更正分配。