반응형


이번 포스팅은 Python3 에서 랜덤값을 얻는 방법에 대해 간단히 정리해 봤습니다. 더 자세한 내용은 직접 파이썬 도큐먼트를 참고 하세요. ^^;


Python3 에서 랜덤 클래스를 사용하기 위하여....

import random 을 처음에 적어줍니다. 그리고 랜덤클래스는 인스턴스를 생성하지 않고 사용합니다.




1. random.seed([seed])

컴퓨터에서 만드는 랜덤값은 모두 계산에 의해 나오는 유사랜덤값입니다. 그러한 랜덤값을 좀더 랜덤하게 만들기 위해서 seed 값을 임의로 넣어줍니다. 만일 생략하거나 None 값인 경우 seed 값으로 현재 시간을 사용합니다.


2. random.random() 

0.0 <= x < 1.0 사이의 값을 출력합니다.


3. random.uniform(a.2, b.5)

a.2 <= x < b.5  사이의 값을 출력합니다.


4. random.randrange(b)

0 <= x < b 사이의 정수값을 출력합니다.


4. random.randrange(a,b)

a <= x < b  사이의 정수값을 출력합니다.


5. random.randint(a,b)

a <= x <= b  사이의 정수값을 출력합니다. 



위는 간단한 사용예 입니다. 뭐....별거 없습니다.


이상은 일반적인 랜덤값을 얻는 함수들이고요.....




파이썬에는 조금 재미있는 함수들이 있더군요.


6. random.choice(x)

x 에 list 변수등을 넣으면 리스트중에 하나의 값을 임의로 리턴해 줍니다.


7. random.shuffle(x)

x 에 list 변수등을 넣으면 내부 값들을 알아서 섞어 줍니다. 


8. random.sample(x,n)

x list 등에서 랜덤하게 n 개의 값을 리턴합니다.



위는 간단한 사용예 입니다. 나름 재미있게 사용할 수 있을것 같네요. 

반응형



파이썬3로 만들어본 간단한 환율 계산기 입니다. 환율 자료는 외환은행의 html 페이지를 간단히 파싱해서 사용하였습니다.


프로그램은 콘솔에서 작동하며 간단히 만들어 본것이라 변환된 값을 너무 신뢰하진 마시길 바랍니다.

요즘 프로그램을 너무 안하기도 했고, 파이썬 써본지도 꽤 되어서 그래도 가끔은 연습을 해 줘야 하지 않나...싶어서 한번 만들어 본것이니까요. ^^;


그런데 확실히 파이썬 편하긴 하네요. c 나 c++ 도 좀 해볼까 했더니 너무 귀찮다고 해야 하나.....불편하다고 해야 하나....^^;



import http.client
 
conn = http.client.HTTPConnection("community.fxkeb.com")
conn.request("GET","/fxportal/jsp/RS/DEPLOY_EXRATE/fxrate_all.html")
r = conn.getresponse()
hdata = r.read()
hdata2  = str(hdata,'euc-kr')   #웹데이터가 euc-kr 이라 변환해줌. 이 프로그램에선 안해줘도 상관은 없을것 같다.
 
fs = '<td width="420" height="28"><b><font color="#48668F">['
index1 = hdata2.find(fs)
index2 = hdata2.find(']<',index1)
 
cdate = hdata2[index1 + len(fs):index2]
cdate = cdate.replace("&nbsp;"," ")
 
fs = '<table width="100%" border="0" cellspacing="0" cellpadding="0" class="table">'
index1 = hdata2.find(fs)
index2 = hdata2.find('</table>',index1)
 
tb = hdata2[index1+len(fs):index2]
 
tbsp = tb.split("</tr>")
del tbsp[0:2]  #환율표의 컬럼 항목이므로 계산에선 쓸일이 없다. 삭제
 
a=[]
va=[]
for t in tbsp:
    idx3=0
    while(1):
        idx1 = t.find('<td',idx3)
        if idx1 == -1 :
            if len(a) > 0 :
                va.append(a.copy())
            break
        idx2 = t.find('>',idx1)
        idx3 = t.find("<" ,idx2)
        a.append(t[idx2+1:idx3].replace("&nbsp;","").replace("\n","").replace("\t","").lstrip().rstrip())
 
    a.clear()       
 
va[1][6] = float(va[1][6]) /100  #일본 엔화는 100 에 대한 환율임
 
while(1):
    print("\n환율 기준 날짜 : {}".format(cdate))
    print("\n입력방법 : 숫자 변환하고싶은통화(예: 25 usd , 30 eur)")
    print("usd : 미국 , jpy : 일본 , eur : 유로 , cny : 중국 , gbp : 영국")
    print("프로그램 종료 : e 혹은 q 입력")
    print("\n입력 : ",end=" ")
    cur=input()
   
    if cur in ['e','q']:
        print("\n프로그램을 종료합니다.\n")
        break
   
    scur = cur.split(" ")
 
    if len(scur) < 2 :
        print("\n입력 오류. 형식에 맞게 입력해 주세요.\n")
        print("-"*60)
        continue
      
    sc = -1
    if scur[1] == "usd":
        sc = 0
    elif scur[1] == "jpy":
        sc = 1
    elif scur[1] == "eur":
        sc = 2
    elif scur[1] == "cny":
        sc = 3
    elif scur[1] == "gbp":
        sc = 4
 
    if sc == -1:
        print("\n입력오류입니다. 정확하게 입력해 주세요.\n")
        print("-"*60)
        continue
    try:   
        print("\n{0:,.2f} 원".format(float(va[sc][6]) * float(scur[0])))
    except ValueError:
        print("\n숫자를 입력해 주세요.\n")
       
    print("-"*60)   





프로그램은 터미널(콘솔)에서 실행됩니다. 위 소스를 적당한 이름으로 저장하시고 터미널을 여신후에


python3 프로그램이름.py


형식으로 실행하면 됩니다. 물론 파이썬3는 설치되어 있어야 하고, 리눅스의 경우는 대부분 기본으로 설치되어 있습니다.


프로그램 사용방법은 위 스샷에 다 설명되어 있고, 실제 실행하면 설명이 나오니 간단히 설명하자면.....

2.99 달러가 현재 국내 원화로 얼마인지를 보고 싶으면 "2.99 usd" 형식으로 입력하면 됩니다. 2.99 와 usd 사이에 빈칸 한칸을 넣어줘야 됩니다.


어차피 내가 보려고 남겨놓는거니까 설명은 이정도로만 하겠습니다. ^^;







반응형



아주 간단히 정리해 보았습니다. 더 상세한 내용은 python3 document 를 참고하세요. ^^;



일단...파이썬3에서는 파이썬2 버전과 달리 print 문에 반드시 괄호를 써야 한다는 점이 다릅니다.

print 를 사용하는 방법은 크게 2가지로 나뉩니다.

1. 기존 C 언어등에서 사용하는 방법

간단히 예제만 적어보겠습니다.


>>>print("a:%d b:%d" % (10,20))

a:10 b:20


C 언어에서 처럼 형식을 지정해서 출력하는 방법(%5d 같은....)도 가능합니다.


2. 파이썬3의 format 을 이용하는 방법


>>>"a:{0} b:{1}".format(10,20)

'a:10 b:20'


>>>"a:{1} b:{0}".format(10,20)

'a:20 b:10'

>>>"a:{} b:{}".format(10,20)

'a:10 b:20'


프린트 될 형식을 지정해 주는것도 가능합니다.


>>>"a:{0:4.2f}".format(343.2234)

'a:343.22'


형식을 지정하는 방법은 C 언어등에서 사용하는 방법과 비슷합니다.


3. 그외 참고할만한것들


>>> a="hello"
>>> a.center(20,"-")
'-------hello--------'
>>> a.ljust(20,"-")
'hello---------------'
>>> a.rjust(20,"-")
'---------------hello'


위의 예를 보면 어떻게 사용하는건지 알 수 있겠죠? ^^;


다음은 zfill()


>>> a=1234
>>> a.zfill(12)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'zfill'
>>> str(a).zfill(12)
'000000001234'


숫자앞에 자리수에 맞추어서 '0' 을 넣어주는 함수인데 당연하지만 rjust 를 이용해도 똑같이 할 수 있습니다. 위의 예를 보면 알겠지만 zfill 함수는 string 쪽 함수입니다.(생각해 보면 당연합니다만....) 따라서 변수가 int 형이면 str 형으로 변환해서 사용해야 합니다.


다음 라인으로 넘어가지 않고 그 라인에 계속 출력하고 싶을때


print(a , end = " ")

print(b)


a가 출력된 이후 빈칸 이후에 b 가 줄바꿈 없이 출력 됩니다.



각 값들 간에 특별한 구분자를 넣고 싶을때.


>>> print(1,2,3,4,5)
1 2 3 4 5


>>> print(1,2,3,4,5,sep="---")
1---2---3---4---5




이 글을 쓴 이후에 추가된 문법입니다. 추가해 놓습니다.



예전에 테스트 해 봤을때는 우분투의 파이썬이 좀 낮은 버전이라 안되던데, 오늘 생각나서 테스트 해 보니 잘 되는군요.

그냥 간단히 스크린샷으로 설명은 대신 합니다.


반응형


2019년 8월 내용을 수정합니다.


시간이 오래 지나다 보니 대부분의 링크가 깨져 있어서 모두 삭제했습니다.

확인 결과 살아 있는 링크는 https://wikidocs.net/ 하나 뿐이군요. ㅡㅡ;


예전 점프 투 파이썬은 2.x 버전을 다루고 있었지만, 시간이 지난만큼 시대에 맞추어서 2.x 버전에서 3.x 버전으로 모두 개편되어 있습니다.


그외에 다른 파이썬 서적들도 추가되었으며 파이썬외의 책들도 추가되어 있으므로 다른 분야에 관심있으신 분들도 도움이 될것 같습니다.



반응형

온라인에서 볼 수 있는 파이썬 강좌인 점프 투 파이썬을 pdf 파일로 보실 수 있습니다.

http://wikidocs.net/read/750

에 가셔서 PDF 파일을 다운받아 보시면 됩니다.

좋은책 공개해 주신것에 대해 감사드립니다.


2013년 12월 13일 수정사항

지금은 pdf 파일로 무료로 제공되지는 않고 있고, 따로 구입을 하셔야 합니다. 온라인으로는 계속 무료로 이용할 수 있습니다.

시간이 지나다 보니 링크가 조금씩 달라져서 이를 수정해서 포스팅 해 두었으니 참고하세요.

새로운 포스팅 링크



반응형


국내 라디오 방송을 스트리밍으로 들으려면 기본적으로 윈도우에서 전용프로그램을 이용해야 합니다. 리눅스나 맥용 프로그램은 없습니다.

최근 윈도우가 아닌 환경에서 듣는 방법을 알려주는 블로그를 발견했습니다.

http://mielikki.tistory.com/197

발견하고 php 소스를 보니 웹페이지로 만들지 않고 프로그램으로 만들수도 있을것 같아 python 으로 만들어 보기로 했습니다. 간단한 연습겸 httplib 도 좀 써보고 싶어서요.

#!/usr/bin/python

import httplib
import subprocess
import sys

def CreateProcess(command):
    try:
        p = subprocess.Popen(command,shell=True)
    except OSError,e:
        print "oserror"

args = sys.argv

if len(args) < 2 :
    ch = 2
else :
    ch = args[1]

conn = httplib.HTTPConnection('kbs xx주소',80)
conn.request("GET","/xxxxxx/xxxxxxxxxx?id=xxxxx&channel=%s"%ch)
r1 = conn.getresponse()
st = r1.read()
conn.close()

index1 = st.find("mms:")
address = st[index1:]

arg = "totem %s"%address
CreateProcess(arg)

파이썬으로 하니 간단히 되는군요.

간단히 설명하면 httplib 라이브러리로 스트리밍 주소를 얻어서 totem 으로 그 주소를 넘겨 재생하게 하는 방식입니다. 리눅스에서 작성했기에 totem 을 쓰도록 했고 윈도우의 경우엔 조금만 수정해 주면 됩니다.

스트리밍 주소인 mms:// 를 얻었으면 다음부턴 그냥 그걸 쓰면 되지 않느냐고 생각하시겠지만 그렇게 얻은 주소를 나중에 사용하려고 하면 에러가 발생하며 재생이 안됩니다. 제 경우엔 이 프로그램을 써도 가끔 안되는 경우가 있더군요. 그땐 다시 시도해 보면 됩니다.

mms:// 주소를 얻는 부분은 kbs 가 딴지를 걸 경우를 대비해 xxx 로 처리해 두었는데 실제 사용하시겠다면 그 부분을 수정해 주면 되고 실제 주소는 위의 링크를 보시면 아실수 있습니다. 뭐...실제로 딴지를 걸만한 근거가 있는지는 모르겠는데 가급적 성가신일은 피하고 싶어서 그런것이니 양해를 바랍니다. ^^;

사용법은 파일이름을 kbsradio.py 라고 가정하면 .....

kbsradio.py 1
kbsradio.py 2


이런식으로 1 채널과 2채널을 선택해 주면 됩니다. 만일 뒤의 인자가 없을 경우 2 채널로 연결됩니다.

나중에 kbs에서 연결방식을 바뀌게 되면 언제든 이 프로그램은 작동하지 않을수 있습니다.

 

반응형

영문사이트 입니다.
좀 잘 알려져있는 Dive Into Python 3 입니다. 웹에서 바로 보실 수도 있고 사이트에서 HTML버전과 PDF 버전을 받아 보실 수도 있습니다.

http://diveintopython3.org/

python 3 버전이 나온지 좀 되었는데 아직 많이 사용되는건 2.6 버전쪽인것 같습니다. 3 버전은 좀 바뀐점도 여럿있다보니...wxpython 도 아직 2.6버전용만 있고 3 버전용은 없더군요.



이책의 2.x 버전용은 한글로 번역이 되어 있는데요.

http://wikidocs.net/mybook/read/index?pageid=4969

여기서 보실수 있습니다.


2013년 12월 13일 수정사항

지금은 링크가 많이 바뀌어 있더군요. 그래서 링크를 수정한 새로운 포스팅을 해 두었습니다.

새로운 포스팅 링크



반응형
파이썬 프로그램중 간단히 class 에 어떤 멤버함수가 있는지 어떤 기능을 하는지 알아보고 싶을때가 있다. 물론 www.python.org 인 공식사이트의 문서를 뒤져볼수도 있지만 간단히 python의 인터렉티브 쉘에서 찾아보는 방법을 적어보고자 한다.

일단 터미널 프로그램을 열고 python을 실행한다.

그런다음 원하는 클래스를 임포트 하자. 여기서는 string 클래스를 예로 들었다.
즉 import string 을 입력한다. 그리고 dir(string)을 입력하면 아래와 같이 string클래스의 멤버함수들이 쭉 나열된다.

어떤 함수들이 있는지는 알았다. 그러면 이 함수의 설명을 보려면? 아래와 같이 help명령을 사용한다.

string 객체의 split의 설명을 보려고 하는 것이다. 위와 같이 입력하고 enter를 누르면 다음과 같이 설명이 나온다.

영어다!!! 음....어쩔 수 없다. 자고로 현재는 영어 몰입교육의 시대이니 뒤쳐지기 싫으면 영어를 유창하게는 못하더라도 이정도는 해석할 수 있어야 하지 않겠는가? 물론 프로그램에 관심을 가지고 있는 분이라면 이글을 쓰는 나보다도 읽고 있는 여러분들이 훨씬 영어를 잘 할거라고 믿는다.

빠져나오려면 'Q' 키를 누르면 된다.

별거아닌 누구나 아는 것이지만 처음 파이썬을 접하는 분들에게 도움이 되었으면 한다.
반응형
강좌라고 해야 할지 전자책이라고 해야 할지 e-book이라고 해야 할지......

예전에 제가 구입했던 python 책이 바로 jump to python 이란 책이었습니다. 나름대로 쉽고 잘 쓰여진 책이라고 생각합니다.

그 책의 저자분께서 파이썬으로 만든 위키독스 라는 서비스를 오픈하셨습니다. 웹상에서 책을 만들수 있는 서비스입니다. 그리고 자신의 jump to python의 2nd edition을 위키독스에서 만들어 공개하고 계십니다. 링크는 여기 입니다.

파이썬을 배우고 싶으신 분들에게 상당히 도움이 될 것 같습니다.

여러 스크립트 언어들이 있지만 현재로서는 파이썬이 이용하기에 가장 범용적이고 유용한것 같습니다. 루비도 언어적으로 맘에들긴 하지만 웹프레임워크인 루비온 레일즈 외에는 그다지 범용적으로 쓰이지는 못하고 있습니다. 아직 파이썬 만큼의 다양한 라이브러리들을 갖추지 못하고 있기도 하고요. 물론 양으로 보자면 Perl이 가장 막강하긴 합니다만........

유용한 python 자료를 공개해주신 저자분께 감사드립니다...

+ Recent posts