迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中错误 TypeError: Must Be Real Number, Not STR

作者:迹忆客 最近更新:2023/05/16 浏览次数:

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

因此,在处理数据类型时要采取防御措施,并确保在处理日期后,将数据转换为必要的数据类型。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

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 错误是如何产生的 正如我们已经讨论过的,这个错误主要发生在客户端程序无法连接到服务器

Python 中 AttributeError: Int Object Has No Attribute 错误

发布时间:2023/05/15 浏览次数:175 分类:Python

修复 Python 错误 AttributeError: 'int' object has no attribute。本篇文章重点介绍并提供了一种解决方案,以应对我们在 Python 中使用 int 数据类型时可能发生的特定错误。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便