2017년 2월 24일 금요일

[Python] __name__

if __name__ == "__main__":    run()
이 코드는 python name.py 와 같이 직접 실행할때 나타난다.

name.py를 import하여 사용할때는 rum()코드가 실행되지 않는다.
namespace와 관련이 있는데, name.py를 독립적으로 코드를 실행할때 사용된다.


2017년 2월 20일 월요일

[English] Day11


mindless 아무 생각이 없는
exhausting 진을 빼는
concerning [전] ~에 관한
potential 잠재적인
lack of ~의 부족

newcomer 신입
utilization 이용, 활용

plagiarism declaration : 표절 선언
sullen : 뚱한
sulk : 삐치다

keep in with somebody : ~와 친한 관계를 유지하다
containment vessel 격납용기
drain off 남자가 소변을 보다
draw in 끌어들이다 / drawn in 끌어들인

prejudice : 편견
workaholic : 일벌레

prevail 만연하다, 팽배하다
documented 문서로 기록된
arson 방화

horrendous 참혹한
standpoint 관점
aversion 혐오감
intensification 강화

plead for 호소하다
eradication 근절


frivolous 사소한
Your crime is so frivolous, I'm pretty sure the officer will not arrest you for it.

mandatory 의무적인
We should go to today's assembly, because i heard it is mandantory for all students.

Give it a go:
한번 해봐라

I'm sure she won't bite your head off
 그녀가 널 방해/저지 하지 않을거라 난 확신해.

This is a form with your important contact details
이것은 당신의 중요한 연락처 세부 사항입니다.

don't be long sullen
시무룩하지마

I'm really sorry but I'm not sure what to write
Could you explain this form to me please?
I know you're busy but I'd be grateful if you could help me : 문서 작성시 질문들

You look prettier in real life than you do in your passport photo
당신은 여권 사진보다 실물이 더 이쁘군요.
I am experiencing very bad indigestion.
소화가 잘안되요

Perhaps you are not used to the food in this country. Let me prescribe you some medication. 아마 이 나라의 음식이 익숙하지 않아서 그럴 거예요. 약 처방 해 줄께요.

I hope this will make me feel better.
이것이 효과가 좋길 바래요.

Mr.Kim will be with you in about the minutes.
김이 10분 안에 올거에요.

Could we arrange the time? = Would you like to reschedule? 약속을 변경하시겠어요?

Hello, this is donggu calling for Mr.will. I would like to notify him that I will be late for this appointment. 윌씨일로 전화드렸는데요, 약속에 늦을 것같다고 그에게 전해주세요.

Would it be possible to reschedule for the same time tommorow? I apologize for the inconvenience.
내일 같은 시간으로 약속 변경이 가능할까요? 불편드려 죄송합니다.

I need some help getting to an office on wall street.  사무실에 가는 방법을 알려주세요.

You could take the subway, but a taxi will be easier since you're new in town.
지하철 탈 수도 있지만, 넌 초행길이라서 택시로 가는 것이 더 쉬울거야.

I'm really in a hurry   제가 정말 급한데요.

Could you say that again please? 다시 한번 설명해 주시겠어요?

Do you have the exact address? 정확한 주소를 알고 있나요?

How long will it take to get there? 거기까지 가는데 얼마나 걸리나요?

Don't be so cocky because I know you're not that good at baseball.
잘난 척하지마, 너 농구 그렇게 잘하지 않잔어.


[Python]네임스페이스와 상속


1)Name Space
파이썬 IDLE에서 dir() 내장 함수를 호출해보면 리스트로 된 반환값을 확인할 수 있습니다. 여기서 두 개의 언더바로 시작하는 것은 파이썬에서 이미 사용 중인 특별한 것들입니다. 이를 제외하고 보면 조금 전에 정의했던 Stock 클래스의 이름이 포함된 것을 확인할 수 있습니다.
>>> dir()
['Stock', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
Stock 클래스의 네임스페이스를 파이썬 코드로 확인하려면 클래스의 __dict__ 속성을 확인하면 됩니다. 딕셔너리 타입에 'market':'kospi'라는 키와 값 쌍이 존재하는 것을 확인할 수 있습니다.
>>> Stock.__dict__
mappingproxy({'market': 'kospi', '__module__': '__main__', '__dict__': <attribute '__dict__' of 'Stock' objects>, '__doc__': None, '__weakref__': <attribute '__weakref__' of 'Stock' objects>})


2)Inheritance

일단 노래를 잘 부르는 부모 클래스가 있다고 생각해 봅시다.
>>> class Parent:
        def can_sing(self):
                print("Sing a song")
 
Parent 클래스를 정의했으니 클래스의 인스턴스를 생성해 보겠습니다. 그리고 노래를 정말 할 수 있는지 메서드를 호출해 확인해 보겠습니다.
>>> father = Parent()
>>> father.can_sing()
Sing a song
이번에는 노래를 잘 부르는 Parent 클래스로부터 상속받은 운이 좋은 자식 클래스를 정의해 봅시다. 클래스의 이름은 LuckyChild라고 하겠습니다. 
>>> class LuckyChild(Parent):
        pass
Parent 클래스로부터 상속받은 LuckyChild 클래스에 대한 인스턴스를 생성한 후 노래를 시켜보겠습니다. 중요한 점은 현재 LuckyChild 클래스에는 어떤 메서드도 존재하지 않는다는 것입니다. 다음 코드를 보면 역시나 부모 클래스로부터 상속받아서 그런지 자신은 메서드를 포함하고 있지 않지만 바로 노래를 부를 수 있군요.
>>> child1 = LuckyChild()
>>> child1.can_sing()
Sing a song



2017년 2월 16일 목요일

[Python] 생성자


파이썬 클래스에는 인스턴스가 생성과 동시에 자동으로 호출되는 메서드인 생성자가 존재합니다. 파이썬에서는 __init__(self)와 같은 이름의 메서드를 생성자라고 하며, 파이썬 클래스에서 __로 시작하는 함수는 모두 특별한 메서드를 의미합니다.
다음은 생성자인 __init__(self) 메서드를 가진 MyClass 클래스를 정의한 것입니다. 앞서 설명한 것처럼 생성자의 첫 번째 인자도 항상 self이어야 합니다.
>>> class MyClass:
        def __init__(self):
                print("객체가 생성되었습니다.")

다음 코드를보면 인스턴스를 생성하자마자 화면에 메시지가 출력되는 것을 확인할 수 있습니다. 이는 인스턴스가 생성되는 시점에 자동으로 생성자인 __init__(self) 메서드가 호출됐기 때문입니다.
>>> inst1 = MyClass()
객체가 생성되었습니다.
클래스 생성자를 이해했다면 BusinessCard 클래스를 수정해 인스턴스의 생성과 동시에 명함에 필요한 정보를 입력받도록 클래스를 새롭게 정의해 봅시다. 
>>> class BusinessCard:
        def __init__(self, name, email, addr):
                self.name = name
                self.email = email
                self.addr = addr
        def print_info(self):
                print("--------------------")
                print("Name: ", self.name)
                print("E-mail: ", self.email)
                print("Address: ", self.addr)
                print("--------------------")

새로 정의된 BusinessCard 클래스의 생성자는 인자가 4개임을 확인할 수 있습니다. 물론 첫 번째 인자인 self는 생성되는 인스턴스를 의미하고 자동으로 값이 전달되므로 인스턴스를 생성할 때 명시적으로 인자를 전달해야 하는 것은 3개입니다. 따라서 인스턴스를 생성할 때 3개의 인자를 전달해주지 않으면 오류가 발생합니다. 생성자 호출단계에서 오류가 발생하면 인스턴스도 정상적으로 생성되지 않게 됩니다.
>>> member1 = BusinessCard()
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    member1 = BusinessCard()
TypeError: __init__() missing 3 required positional arguments: 'name', 'email', and 'addr'
>>>
새로 정의된 BusinessCard 클래스는 생성자에서 3개의 인자(name, email, addr)를 받기 때문에 다음과 같이 인스턴스를 생성할 때 3개의 인자를 전달해야 정상적으로 인스턴스가 생성됩니다. member1이라는 인스턴스가 생성된 후에는 인스턴스 메서드를 호출해 인스턴스 변수 값을 화면에 출력할 수 있습니다. 
>>> member1 = BusinessCard("Kangsan Lee", "kangsan.lee", "USA")
>>> member1.print_info()
--------------------
Name:  Kangsan Lee
E-mail:  kangsan.lee
Address:  USA
--------------------
>>>

출처 : https://wikidocs.net/1740


2017년 2월 13일 월요일

[Python] module import 방법



1]
>>> import os
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']

2]
>>> from os import listdir
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'listdir']
os 모듈 내의 listdir() 함수를 호출할 경우 오류가 발생합니다. listdir()과 같이 해당 함수를 직접 이용하는 방법만 가능합니다.
>>> os
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    os
NameError: name 'os' is not defined
>>> os.listdir()
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    os.listdir()
NameError: name 'os' is not defined
>>> listdir()
모듈 내의 함수를 호출할 때 모듈을 임포트하는 첫 번째 방식에서는 '모듈명.함수명' 형태로 사용했는데, 두 번째 방식은 함수 이름만으로도 바로 함수 호출이 가능하므로 프로그래밍할 코드의 수가 적어진다는 장점이 있습니다. 다만 두 번째 방식은 기존에 선언된 변수나 함수와 이름이 충돌할 가능성이 있습니다.

extra]
아래 코드는 "os 모듈을 winos로 임포트하라"입니다. dir() 함수의 결괏값을 확인해보면 os 대신 winos 항목이 결괏값 리스트에 있는 것을 확인할 수 있습니다. 따라서 os 모듈 내에 있던 함수를 사용할 때도 os.getcwd()가 아니라 winos.getcwd()와 같이 사용해야 합니다.
>>> import os as winos
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'winos']
>>> winos.getcwd()
'C:\\Anaconda3\\Lib\\idlelib'
>>>

2017년 2월 9일 목요일

[Python] Module(time, os)


1]Time module
모듈은 직접 정의해도 되지만 일단은 기본적인 time 모듈을 사용해 보겠습니다. time 모듈에서 현재 시각을 구하는 함수는 time()입니다. 
>>> import time
>>> time.time()
1444532446.467043
>>> time.ctime()
'Sun Oct 11 12:00:50 2015'
>>> type(_)
<class 'str'>
사람들이 좀 더 쉽게 읽을 수 있는 시간을 구하려면 ctime() 함수를 사용하면 됩니다. 
여기서 type() 함수의 인자로 _를 사용했는데 파이썬 IDLE에서 _는 가장 최근의 반환값을 바인딩하고 있는 변수입니다. <class 'str'>, 즉 문자열 타입임을 알 수 있습니다.
time.ctime()의 반환값에서 연도(year)만 구하려면 어떻게 해야 할까요? 앞서 time.ctime()의 반환값이 문자열이었으므로 문자열에서 제공하는 메서드를 사용하면 되겠죠?
>>> cur_time = time.ctime()
>>> print(cur_time.split(' ')[-1])
2015

time 모듈의 sleep() 함수는 인자로 전달되는 값에 해당하는 초(sec) 동안 코드의 실행을 멈추는 역할을 합니다.코드를 실행하면 파이썬 IDLE에서 숫자가 1초 간격으로 출력되는 것을 확인할 수 있습니다.
>>> for i in range(10):
        print(i)
        time.sleep(1)

앞에서 설명한 것처럼 파이썬에서 모듈은 파이썬 파일을 의미합니다. 그러나 모듈의 실행 속도가 중요한 일부 모듈은 파이썬으로 작성되지 않고 C 언어로 작성됩니다. 이 경우에는 해당 모듈의 코드를 직접 볼 수는 없습니다. 다음 코드는 time 모듈과 random 모듈을 임포트한 후 해당 모듈의 위치를 확인하는 코드입니다. time 모듈은 내장 모듈이기 때문에 해당 모듈의 위치가 따로 출력되지는 않지만 random 모듈은 해당 모듈이 위치하는 경로가 출력되는 것을 볼 수 있습니다.
>>> import time
>>> time
<module 'time' (built-in)>
>>> import random
>>> random
<module 'random' from 'C:\\Anaconda3\\lib\\random.py'>

모듈 안에 어떤 함수나 변수가 있는지 어떻게 확인할 수 있을까요? 임포트된 모듈에 대해 모듈명을 사용해 dir() 내장 함수를 호출하면 해당 모듈의 구성 요소를 확인할 수 있습니다.
>>> import time >>> dir(time) ['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']


2]OS module
os 모듈은 Operating System의 약자로 운영체제에서 제공되는 여러 기능을 파이썬에서 수행할 수 있게 해줍니다.
먼저 현재 경로를 구하려면 os 모듈의 getcwd() 함수를 사용하면 됩니다. 아래 코드는 현재 파이썬 IDLE가 해당 경로에서 실행됐기 때문입니다.
>>> import os
>>> os.getcwd()
'C:\\Anaconda3\\Lib\\idlelib'
>>>

특정 경로에 존재하는 파일과 디렉터리 목록을 구하는 함수인 listdir() 함수를 사용해보겠습니다. 다음 코드를 보면 현재 경로인 C:\Anaconda3\Lib\idlelib에 존재하는 파일과 디렉터리 목록이 리스트로 구성된 후 반환되는 것을 확인할 수 있습니다.
>>> os.listdir()
['aboutDialog.py', 'AutoComplete.py', 'AutoCompleteWindow.py', 'AutoExpand.py' .......]
 listdir() 함수의 인자로 특정 경로를 지정하는 경우 해당 경로에 있는 파일,디렉터리 목록이 반환됩니다.
>>> os.listdir('c:/Anaconda3')
['conda-meta', 'DLLs', 'Doc', 'envs', 'Examples', 'include', ....]

listdir() 함수의 반환값에 대해 len() 함수를 사용한 예입니다. 해당 경로에는 28개의 파일 또는 디렉터리가 존재하는 것을 확인할 수 있습니다. 참고로 type() 함수를 이용해 listdir()함수의 반환값 타입은 리스트임을 확인할 수 있습니다.
>>> files = os.listdir('c:/Anaconda3')
>>> len(files)
28
>>> type(files)
<classlist’>

이번에는 'c:/Anaconda3'이라는 경로에 있는 파일 중 확장자가 'exe'로 끝나는 파일만 출력하는 코드를 작성해 보겠습니다. 문자열의 endswith() 메서드를 조합하면 됩니다. 
>>> for x in os.listdir('c:/Anaconda3'):
        if x.endswith('exe'):
                print(x)
python.exe
pythonw.exe
Uninstall-Anaconda.exe
출처 : https://wikidocs.net/3086

2017년 2월 8일 수요일

[Java]외워야 할 Math class 함수들


Math.PI 원주율
Math.sqrt(number) 제곱근
Math.toDegree(num) 라디안(컴퓨터) -> 디그리(사람) 단위로 변환
Math.toRadians(num)

Math.sin(num) 싸인
Math.cos(num) 코싸인
Math.tan(num) 탄젠트     num은 라디안 단위 값이여야 한다.

Math.log(num) 로그
Math.pow(num, 5) num의 5승

Random ran = new Random();
ran.nextInt(1000); ram.nextBoolean(); 난수 생성

StringTokenizer st = new StringTokenizer("문자열", "토큰");
public String nextToken()           //다음 토큰 반환
public boolean hasMoreTokens() //반환할 토크 확인