파이썬의 반복구문인 for는 배열을 처리하는데 매우 간단한 방법을 제공한다. 가령, ar이라는 배열이 이미 선언되어 있으면, ar의 원소들을 하나하나 끌어서 처리하는데 다음과 같이 쓰면 된다.


for i in ar:

   myFunction(i)


문제는 내가 i가 몇번째 원소인지 굳이 알아야만 하는 경우에 나타난다. 내가 지금 푸는 문제는 전체 길이가 N인 배열에서 k번째 원소와 k+m번째 원소 사이에 있는 원소에만 함수를 적용해야 하는 상황이기 떄문에 굳이 필요하다. 이 경우, 고전적인 방법으로


for i in range(len(ar)):

   if i>k and i<k+m:

      myFunction(ar[i])


이렇게 쓰면 될 것이다. 또는


j=0

for i in ar:

   if j>k and j<k+m:

      myFunction(ar)

   j+=1


이렇게 쓸 수도 있다. 하지만 이렇게 작성하는 것은 전혀 파이썬스러운 코딩이 아니다. 파이썬처럼 코딩하는 것은 제일 처음에 쓴 바로 그것이다. 그래서 지금 어떻게 하고 있냐고?


myFunction(ar[k:k+m])


이렇게 해보고 있다. 뭔가 이상하지만 이제 파이썬 스러워졌다.


by snowall 2015. 8. 31. 01:25

abort와 cancel은 둘 다 뭔가를 취소한다는 뜻으로 사용된다. 특히 영어로 된 프로그램을 설치하다가 중단하고 싶을 때, 또는 파일 복사하다가 중복된 파일이 있을 때 컴퓨터가 물어보는 대화창에서 많이 발견하게 되는데 둘 사이에는 뜻에 차이가 있다.


abort는 사전을 찾아보면 제일 처음에 나오는게 '낙태'의 뜻이다. 즉, 태아를 유산시킨다는 뜻이 제일 처음 나온다. 이것은 '중단하다'는 뜻이다. 즉, 잘 진행되고 있던 어떤 사건을 중간에 끊는다는 뜻이다. 하다가 만다는 뜻.


cancel은 취소하다, 상쇄시키다는 뜻이 나온다. 이것은 하려고 하다가 말았다는 뜻이 있다. abort가 하다가 중간에 그만둔 경우라면, Cancel은 아예 시작도 하지 않고 그만뒀다는 뜻이다.


by snowall 2015. 8. 29. 22:44



나름(?) 명곡.

아미가르 레스토랑 내일 슬퍼도 오늘은 잊어버리게
아미가르 레스토랑 나를 떠나간 그 애를 기억하지마


도니돈도니돈도니돈도니 화려한 음악 속에 쉐이크 쉐이크 핸드

도나돈도니돈도니돈도니 외로운 밤을 모두 멀리 날려 줘


지금 흐르는 음악은 아미가르 레스토랑의 멋진 칵테일의 밤을 위하여  흐르는 노래 춤을 춰요 바텐더

너의 손에 그 향기를 돈도니 베이비 멈추지마 모두 화려한 유혹에 취하고 싶은 사람들의 소리질러 너를 불러

음악이 멈추면 집으로 가겠지만 슬픈 사랑은잊게해줘 도니도니 베이비 지금 흐르는 음악은

아미가르 레스토랑의 멋진 칵테일의 밤을 위하여 흐르는 노래 춤을 춰요 바텐더 너의 손에 그 향기를 돈도니 베이비

멈추지마 모두 화려한 유혹에 취하고싶은 사람들의 소리질러 너를 불러 음악이 멈추면 집으로 가겠지만 슬픈 사랑은 잊게해 줘 도니도니 베이비 오는 날 위해 너희는 그런 곳에 가지 마라 아미가르 레스토랑 헤이헤이


매일같이 나를 간섭하는 내 어머니 그런 옷은 안 된다

안델센의 동화를 읽는 어린 내가 아냐 나도 이젠 지금 내 머리 속에

상상하는 일들은 결코 어리지 않아요 어머니 나도 멋진 사랑을

이젠 하고 싶어 내 나이의 친구처럼 don’t say it mama
나를 놓아줘 아미가르 레스토랑 사랑하는 사람처럼

칵테일 춤을 나와함께 아미가르 레스토랑 외로운 밤을
모두다 멀리 날려 줘


--

어디있는 레스토랑일까. 아미가르 레스토랑. 음악이 멈추면 집으로 가야하는 레스토랑. 바텐더가 춤추는 레스토랑. 




by snowall 2015. 8. 20. 04:43

누가 봐도 오타를 낸 것 같아 보이겠지만 의도한 대로 작동하는 코드를 만들었다. 어쩌다보니 어떤 변수 i가 가장 처음엔 0에서 시작하는데 두번째부터 1로 고정되는 루틴을 만들어야 했는데, 조건문을 쓰고싶지 않았다. 그래서..


i=0

while True:

    myFunction(x, i)

    i=1


파이썬 스타일 코딩이다.

이런식으로 만들었다. 보통 저 자리에 i=1이 아니라 i+=1을 넣기 때문에 오타같아 보이지만, 사실은 의도한대로 잘 적은 것이다. 이 기록은 나중에 내가 까먹고 저걸 디버깅(!) 해 버릴까봐 작성해 둔다. 물론 저 코드에는 따로 주석도 달아두었다.




by snowall 2015. 8. 17. 17:08

C언어 - 읽기 어렵다. 컴파일해야 실행시켜볼 수 있다. 잘 짜면 빠르긴 한데 초보한텐 그게 그거라는게 함정.
파이썬 - C언어보다는 읽기 쉽다. 처음에 배우기 쉽다. 다른 사람한테 프로그램 전달할 때 패키징하는게 골때린다.
랩뷰 - 입으로 코딩하고 싶은 1순위 언어.
매스매티카 - 리습의 영향을 받아서 그런가, 괄호에 미친언어. C언어같은 절차형 프로그래밍 언어를 먼저 배우고서 매스매티카를 배우려면 뭔가 혼란이 올 수 있다.
매트랩 - 이상한 문법을 쓰는 행렬용 계산기. 자의로 쓰고싶지는 않은 언어다.
비주얼베이직 - '이게 왜 작동하지?'싶은 수준의 코드도 굴러간다. 윈도우 전용인게 단점. 그리고 프로그램 만드는 것 자체는 VS의 도움을 받아서 어렵지 않은데, 완성된 코드를 보면 복잡하다.
메이플 - 느리다. 쓰지 마라.

by snowall 2015. 8. 15. 16:38