파이썬 : TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
조회수 7050회
2이상의 정수를 입력 받아 2부터 n까지 정수들의 약수의 개수와 소수를 출력하는 프로그램을 만들어야 하는데, 출력부분에서 막혀요.
def readNumber():
while True:
n = int(input("정수를 입력하세요: "))
if (n >= 2):
break
else:
print("2 이상의 숫자를 입력하세요.")
continue
def getCountsOfDivisors(n):
count = 0
for i in range(1, n+1):
if n % i == 0:
count += 1
print(count)
def isPrime(n):
for f in range(2, n-1):
if n % f == 0:
print("False")
else:
print("True")
num = readNumber()
for t in range (2, num + 1):
print("정수: " + str(t) + " 약수 개수: " + str(getCountsOfDivisors(t)) + " 소수: " + str(isPrime(t)))
이렇게 코드를 짰는데
Traceback (most recent call last):
File "C:\Users\Desktop\Desktop\202110943 안세호 실습과제 #07.py", line 28, in <module>
for t in range (2, num + 1):
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
이런 오류가 떠요 뭐가 문제죠? 제가 원하는 출력 모습이에요.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
readNumber 함수의 리턴 값(반환 값)이 없어서 그렇습니다.
아래와 같이 리턴 값을 추가해 주세요.
def readNumber(): while True: n = int(input("정수를 입력하세요: ")) if (n >= 2): break else: print("2 이상의 숫자를 입력하세요.") continue return n
일단 오류의 원인은 위와 같고요.
그런데 다른 함수들도 리턴 값이 있어야 할것 같네요.
보고 계신 교재에서 함수의 리턴 값을 다루는 부분을 꼭 찾아서 읽어보셔야 할 것 같아요.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력