TypeError: 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'
여기에 숫자 바인딩이 문자열 데이터 12를 보유했기 때문에 TypeError
메시지가 있습니다. 정수나 실수 대신 12.
그러나 이 TypeError: unsupported operand type(s) for /: 'str' and 'int'
는 TypeError: must be real number, not str
오류와 다릅니다. 차이점은 발생하는 작업에 있습니다.
Python의 math
라이브러리를 사용하여 사용자가 입력한 숫자를 내림합니다.
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()
메서드에 대한 문자열을 포함하는 number
바인딩을 구문 분석하고 이 메서드에는 float
또는 integer
라는 숫자가 필요하기 때문에 다릅니다.
따라서 문제를 해결하려면 사용자가 전달하는 값의 데이터 유형을 필요한 항목에 따라 float
또는 integer
바인딩으로 변환해야 합니다.
내장 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
import 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
데이터 값이 필요한 math
메서드로 구문 분석됩니다. 그러나 바인딩의 데이터 유형은 strings
이며 float
또는 int
로 변환해야 합니다.
이 경우 코드 문제를 해결하는 보다 책임 있는 방법은 값을 다시 변경할 필요가 없기 때문에 수학적 표현에 사용하기 전에 데이터 유형을 변환하는 것입니다.
import random
import 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
따라서 데이터 유형을 다룰 때는 방어적이어야 하며, 날짜로 작업한 후에는 데이터를 필요한 데이터 유형으로 변환해야 합니다.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn관련 문장 - Python TypeError
- Python TypeError 수정: 목록 인덱스는 목록이 아니라 정수여야 합니다.
- Python TypeError: 필수 위치 인수 1개 누락
- Python TypeError: 해시할 수 없는 유형: 목록
- TypeError 해결: Python에서 문자열 형식 지정 중에 일부 인수가 변환되지 않음
- TypeError 해결: Python에서는 정수가 필요합니다.
관련 문장 - Python Error
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.