[python 파이썬 기초] 무엇이 문제인가요~~~~~~
조회수 769회
n=int(input("user input :"))
numlist= [2];
listnum=1;
def numberOfPrime (n):
for i in range(3,n):
if (n % i == 0):
numlist.append(n)
listnum+=1;
return numlist
return listnum
else:
return print("소수가 아니므로 출력 X")
print(numberOfPrime(n))
소수이면 numlist 에 append하고 아니면 아니라고 출력하는 def 만드려고 하는데 뭐가 문젤까여...........
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
n=int(input("user input :")) numlist= [2]; listnum=1; def numberOfPrime (n): global numlist global listnum for i in range(3,n): if (n % i == 0): numlist.append(n) listnum+=1; return numlist ,listnum else: return "소수가 아니므로 출력 X" print(numberOfPrime(n))
문법적으로는 이정도 수정을 해야 할 것 같습니다. 그렇다고 알고리즘이 옳다는 것은 아닙니다.
global 이라는 키워드를 쓰지 않은면 함수안의 listnum는 지역변수로 간주됩니다. 그런데 초기화하지 않고 연산에 이용하므로 에러가 발생합니다.
재미있는 것은 global numlist를 생략하도 numlist 는 전역변수로 이해됩니다.
numlist.append(n)에서 numlist는 이미 존재하는 인스턴스로 이해해서 로칼영역에 해당 변수를 찾고 없으므로 전역변수에서 찾는 것입니다.
만약
numlist = numlist + [n] ( numlist += [n] )
로 하면 listnum+=1 와 동일한 에러가 발생합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력