playXP

서브 메뉴

Page. 1 / 12506 [내 메뉴에 추가]
글쓰기
작성자 아이콘 marine12
작성일 2020-03-23 20:01:07 KST 조회 443
제목
코드 수정했는데 한 번 봐주실 수 있나여

import time,random

 

n=int(input("원하시는 숫자를 입력하세요:"))

 

X=[random.randint(-999,999) for i in range(n)]

 

#pr1 start

def prefixSum1(X, n): # code for prefixSum1

for i in range(n-1):

S = 0

for j in range(i):

S=S+X[j]

return (S)

 

#pr2 start

def prefixSum2(X, n): # code for prefixSum2

S[0]= X[0]

for i in range(1, n-1):

S=S[i-1]+X

return (S)

#

random.seed()

before=time.clock()

prefixSum1(X,n)

after=time.clock()

print(after - before)

 

before2=time.clock()

prefixSum2(X,n)

after2=time.clock()

print(after2-before2)

 

현재 나오는 오류

  File "Main.out", line 10, in prefixSum1

    S = 0

NameError: name 'S' is not defined

보니까 S가 정의 안 되어 있다는데 원래 S배열 같은 걸 하나하나 정의해줘야 하나요? 함수호출 하기 전에는 오류가 안 떴는데...

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

아이콘 marine12 (2020-03-23 20:18:37 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
보니까 S를 함수 밖에서 정의해줘야 할 거 같은데 그러려면 S를 멀로 정의해야 하지;; 아우
아이콘 개념의극한 (2020-03-23 20:25:30 KST)
0↑ ↓0
센스 이미지
음... 다른 함수에서는 S말고 다른거 써보세요
아이콘 marine12 (2020-03-23 20:38:56 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
ㄴ 무슨 뜻인지 좀 더 자세히 알려주실 수 있으신가요??
아이콘 개념의극한 (2020-03-23 20:42:18 KST)
0↑ ↓0
센스 이미지
함수 하나에선 S말고 다른 이름을 써봐요
아이콘 베리타스꼬꼬마 (2020-03-24 03:49:52 KST)
0↑ ↓0
센스 이미지
뭔가 많이 이상해서.. 앞에 글까지 보고왔는데 그래도 잘 모르겠네요 ㅋㅋㅋ
앞에 댓글 지우고 정리해서 달게요.

랜덤 배열 X[n]에서 i번째 값까지의 합을 항목으로 하는 배열 S[n]을 구하고 싶으신 거라면
일단 함수 시작 때 S[n]을 정의하시고요,
for문에 들어가는 변수 이름을 S 말고 part_sum 뭐 이런 걸로 대충 해놓고
for문 시작하면서 part_sum = 0 한 후에
i번째 part_sum을 for로 계산한 다음에 S = part_sum
return S 하시면 됩니다
아이콘 베리타스꼬꼬마 (2020-03-24 03:53:03 KST)
1↑ ↓0
센스 이미지
def prefixSum1(X, n): # code for prefixSum1
S = [0 for i in range(n)]

for a in range(n-1):
part_sum = 0
for j in range(a):
part_sum = part_sum + X[j]

S[a] = part_sum

return (S)
아이콘 베리타스꼬꼬마 (2020-03-24 03:55:42 KST)
0↑ ↓0
센스 이미지
아 댓글 쓰면서 깨달았는데 플엑의 어떤 스크립트 때문에 [
i] 이게 짤리면서 이탤릭채로 바뀌네요
그러면 S라는 list를 정의하지 않고 바로 i번째 항목 값을 접근하는 거니까
아직 정의되지 않았다는 undeclared error가 뜨게 됩니다.
제 바로 윗 댓글의 맨 윗부분처럼 S를 정의하면 돼요
아이콘 베리타스꼬꼬마 (2020-03-24 03:56:39 KST)
0↑ ↓0
센스 이미지
아무리 파이썬이라도 리스트는 정의하고 써야합니다...
아이콘 marine12 (2020-03-24 14:38:38 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
ㄴ 가만히 냅둬도 지 혼자 잘하길래 믿었는데 그렇군요... 정말 감사합니다. 다시 해볼게용 ㅎㅎ
아이콘 marine12 (2020-03-24 14:43:48 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
def prefixSum1(X, n): # code for prefixSum1
S=[]
for i in range(n-1):
S.append(0)
for j in range(i):
S=S+X[j]
return (S)
#clear, don't touch antm===
#pr2 start
def prefixSum2(X, n): # code for prefixSum2
S=[0 for i in range(n)]
S.append(X[0])
for i in range(1, n-1):
S[ i ]=S[ i-1 ]+X
return (S)
정상 작동 합니다 ㅎㅎ
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.