Python 中错误 TypeError: Must Be Real Number, Not STR
TypeError: must be real number, not str 错误涉及使用错误的类型和非实数,在本例中为 str 类型。
使用数据类型可能很棘手,但重要的是强制执行或确保您将正确的数据类型解析为函数以避免此类 TypeError。
本文将解释 TypeError: must be real number, not str 错误是如何首先出现的,以及如何使用类型转换来解决它。
使用 float() 或 int() 解决Python 中 TypeError: must be real number, not str
在使用函数时,尤其是内置函数,所需的参数通常是特定类型的。 它可以是任何原始数据类型,int、float、string 或 Boolean。
因此,重要的是要确保我们正在使用和解析的值是正确的数据。
一个典型的例子是使用内置的 input()
函数来获取一个数字并在一个简单的数学表达式中使用该数字。
number = input("Enter a Number: ")
print(number/34 + 45 * number)
输出:
Enter a Number: 12
Traceback (most recent call last):
File "C:\Users\akinl\Documents\Python\steps.py", line 2, in <module>
print(number/34 + 45 * number)
TypeError: unsupported operand type(s) for /: 'str' and 'int'
在这里,我们有一个 TypeError 消息,因为数字绑定持有一个字符串数据 12; 而不是整数或浮点数,12。
但是,此 TypeError: unsupported operand type(s) for /: 'str' and 'int' 与此 TypeError: must be real number, not str 错误不同。 区别在于正在发生的操作。
让我们使用 Python 中的数学库来向下舍入用户输入的数字
import math
number = input("Enter a Number: ")
print(math.floor(number))
输出:
Enter a Number: 12.45
Traceback (most recent call last):
File "C:\Users\akinl\Documents\Python\steps.py", line 3, in <module>
print(math.floor(number))
TypeError: must be real number, not str
现在,TypeError 不同了,因为我们正在解析数字绑定,它包含一个字符串到 floor()
方法,而该方法需要一个数字、浮点数或整数。
因此,要解决这个问题,我们需要将用户传递给数字绑定的值的数据类型转换为浮点数或整数,这取决于我们的需要。
内置的 float()
函数最适合处理浮点数。 鉴于我们需要对十进制数进行四舍五入,我们需要 float()
函数。
import math
number = float(input("Enter a Number: "))
print(math.floor(number))
输出:
Enter a Number: 123.45
123
int()
函数在需要的数字是整数的情况下很有用。 如果我们只需要将整数解析到 sin()
方法,我们可以使用 int()
方法。
import math
number = int(input("Enter a Number: "))
print(math.sin(number))
输出:
Enter a Number: 12
-0.5365729180004349
对于更简单的情况,它可能更容易解决,但对于某些复杂或更难的场景则更棘手。 例如,如果您正在使用随机三角函数计算器,可能很难看到需要转换的位置。
最好立即转换,尤其是在运算表达式之前。 在这种情况下,数学运算。
import random, math
def create():
global sideA
sideA = format(random.uniform(1, 100), '.0f')
global sideB
sideB = format(random.uniform(1, 100), '.0f')
global angleA
angleA = format(random.uniform(1, 180), ',.3f')
global angleB
angleB = ANGLE_B()
return angleB
def ANGLE_B():
angle = format(math.asin(sideB*(math.sin(angleA)/sideA)), '.3f')
return angle
print(create())
输出:
Traceback (most recent call last):
File "c:\Users\akinl\Documents\Python\float.py", line 18, in <module>
print(create())
File "c:\Users\akinl\Documents\Python\float.py", line 11, in create
angle_b = ANGLE_B()
File "c:\Users\akinl\Documents\Python\float.py", line 15, in ANGLE_B
ang = format(math.asin(side_b*(math.sin(angle_a)/side_a)), '.3f')
TypeError: must be real number, not str
如果跟踪错误,您可以看到它从调用 ANGLE_B()
函数的 print(create())
开始,使用绑定的 sideA、sideB 和 angleA。
这些绑定被解析为需要 float 和 int 数据值的数学方法。 但是,绑定的数据类型是字符串,需要转换为 float 或 int。
在这种情况下,解决代码问题的更负责任的方法是在数学表达式中使用之前转换数据类型,因为我们不需要再次更改值。
import random, math
def create():
global sideA
sideA = float(format(random.uniform(1, 100), '.0f'))
global sideB
sideB = float(format(random.uniform(1, 100), '.0f'))
global angleA
angleA = float(format(random.uniform(1, 180), ',.3f'))
global angleB
angleB = ANGLE_B()
return angleB
def ANGLE_B():
angle = math.asin(sideB*(math.sin(angleA)/sideA))
return angle
print(create())
输出:
0.7293575839721542
因此,在处理数据类型时要采取防御措施,并确保在处理日期后,将数据转换为必要的数据类型。
相关文章
Python 中 Importerror: Install XLRD for Excel Support 错误
发布时间:2023/05/16 浏览次数:162 分类:Python
-
在本篇文章中,我们将探讨在 Python 中使用 Pandas 包时可能遇到以下错误的原因和解决方案。ImportError: Install xlrd >= 0.9.0 for Excel support 。让我们首先简要介绍一下 Pandas。
解决 Python 中 TypeError: An Integer Is Required 错误
发布时间:2023/05/16 浏览次数:100 分类:Python
-
在 Python 代码中发生的另一个最常见的错误是 TypeError。本文将展示我们如何在 Python 中得到 TypeError。 此外,我们将通过使用必要的示例和解释来讨论该主题,以使该主题更容易理解。
Python 中 ConnectionRefusedError: [Errno 61] Connection Refused 错误
发布时间:2023/05/16 浏览次数:189 分类:Python
-
有时在设计客户端-服务器程序时,您可能会遇到错误 ConnectionRefusedError。Python中 ConnectionRefusedError 错误是如何产生的 正如我们已经讨论过的,这个错误主要发生在客户端程序无法连接到服务器
修复 windows 中 Python错误 Command cl.exe Failed: No Such File or Directory
发布时间:2023/05/16 浏览次数:124 分类:Python
-
pip 是 Python 的一个工具,允许您安装和管理包。 修复 Windows 中 command 'cl.exe' failed:No such file or directory 错误
Python 运行脚本错误 OSError: [Errno 8] Exec Format Error
发布时间:2023/05/15 浏览次数:187 分类:Python
-
Python 中的 subprocess 模块允许您通过创建新进程来运行命令。 使用其方法运行 shell 脚本时,有时您可能会在 Linux 中遇到 OSError: [Errno 8] Exec format error。
Python 中 AttributeError: Int Object Has No Attribute 错误
发布时间:2023/05/15 浏览次数:175 分类:Python
-
修复 Python 错误 AttributeError: 'int' object has no attribute。本篇文章重点介绍并提供了一种解决方案,以应对我们在 Python 中使用 int 数据类型时可能发生的特定错误。
Python 修复共享内存问题和锁定共享资源问题
发布时间:2023/05/15 浏览次数:136 分类:Python
-
本篇文章解释了多处理共享内存的不同方面,并演示了如何使用共享内存解决问题。 我们还将学习如何使用锁来锁定 Python 中的共享资源。
Python 中 ImportError: No Module Named Setuptools 错误
发布时间:2023/05/15 浏览次数:141 分类:Python
-
本篇文章讨论了 ImportError saying no module named setuptools 并提供了在 Python 中消除此错误的解决方案。Python 设置工具库
Python 中解决 TypeError: Can't Multiply Sequence by Non-Int of Type STR 错误
发布时间:2023/05/15 浏览次数:189 分类:Python
-
本篇文章着重于并旨在为 TypeError: can't multiply sequence by non-int of type 'str' 错误提供解决方案。Python 提供了多种数据类型,str 数据类型就是其中之一。 Python 中的字符串表示一系列 Unicode 字符,用