728x90
반응형

 

* 주피터 노트북에서 실행하였다.

 

import requests

 

만약 실행되지 않는다면 주피터 노트북 상에서 설치하는 방법이 있다.

 

!pip install requests

 

pwd #현재 위치

실명이라 가렸다.

 

import requests as rq
url = "https://hello-ming.tistory.com/"
res=rq.get(url) #get방식으로 접근
print(res) # <Response [200]>

rq.post(url) # <Response [200]>

res.status_code # 200

 

def url_check(url):
    res = rq.get(url)
    
    print(res)
    sc = res.status_code
    if sc==200:
        print("%s 요청 성공"%(url))
    elif sc==404:
        print("%s 알 수 없는 에러 "%(url))
    else:
        print("%s 알 수 없는 에러:%s "%(url,sc))

headers=res.headers #헤더들을 가져온다.
headers

type(headers) 

딕셔너리인것을 알 수 있다.

 

headers['Date'] #딕셔너리라 key값을 주면 value를 불러올 수 있다.

 

#반복문을 이용하여 항목 출력
for i in headers:
    print('1) key : ',i,' 2) values : ',headers[i])

728x90
반응형
728x90
반응형

PyCharm(파이참)에서 PyQT를 실행하였고

 

위젯을 생성하여 버튼을 누르면 함수를 호출하여 QMessageBox를 띄우는 것을 해볼 것이다.

 

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QMessageBox

def dialog():
    a = QMessageBox()
    a.setText("여기에 출력되요")
    a.setDetailedText("상세 항목이 나와요")
    a.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
    a.exec_()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w= QWidget()
    w.resize(300,300)
    w.setWindowTitle("안녕 컴퓨터")
    label = QLabel(w)
    label.setText("여기는 라벨이에요")
    label.move(100,130)
    label.show()
    btn = QPushButton(w) #위젯 집어넣기
    btn.setText("여기는 푸시 버튼")
    btn.move(110,150) #버튼의 위치 이동
    btn.clicked.connect(dialog) #btn이 눌리면 dialog 함수 호출
    btn.show() #버튼을 보여줌
    w.show() # 중요 window는 기본값이 hidden이라 show 해야함
    sys.exit(app.exec_()) # 이상태는 이벤트 루프가 돌고있다.

라벨과 푸시버튼

 

버튼을 누르면 QMessageBox가 띄어진다.

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북에서 실행했다.

 

def product_set(set1,set2):
    res=set()
    for i in set1:
        for j in set2:
            res = res | {(i,j)}
    return res
A = {1,3}
B = {2,4}
AxB = product_set(A,B)
print('A= ',A)
print('B= ',B)
print('AxB= ',AxB)

SQL의 Cross Join과 동일하다. 데카르트의 곱

 

곱집합 함수를 이용한 집합의 세제곱 연산

def product_set(set1,set2):
    res=set()
    for i in set1:
        for j in set2:
            res = res | {(i,j)}
    return res
def exp(input_set, exponent):
    res=input_set
    for _ in range(exponent-1):
        res=product_set(res,input_set) #호출한 결과를 res에 누적하여 반환함
    return res
A = {1,3}
A3 = exp(A,3) #집합 A에 대하셔 거듭 제곱을 3회 수행함
print(A3)

 

이를 참고하여 주사위를 두번 던졌을 때 가지수를 구해보자

cases={1,2,3,4,5,6}
cases_2times = product_set(cases, cases)
cases_2times #주사위 두번던졌을 때 가지수

 

#주사위 2번 던졌을 때 set이라 36이 안나오고 11가지 밖에 없음
sum_set ={sum(tup) for tup in cases_2times}
sum_set

 

위 코드를 list로 변환해 보았다.

sum_set =[sum(tup) for tup in cases_2times]
len(sum_set)

 

주사위 3번 던졌을 때 경우의 수 구하기

def tuple_sum(tup):
    if isinstance(tup, int): #tup가 정수(int) 형이면 tup을 반환
        return tup
    else:
        accum=0
        for element in tup:
            accum += tuple_sum(element) #재귀적 호출, 자기 자신 호출
    return accum
def product_set(set1,set2):
    res=set()
    for i in set1:
        for j in set2:
            res = res | {(i,j)}
    return res
cases_3times = product_set(cases, cases_2times)
sums={tuple_sum(tup) for tup in cases_3times}
sums

 

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북을 이용하였다.

 

딕셔너리를 생성한다.

 

나이 컬럼을 수정한다.

 

없는 키값을 추가해 보자.

 

 

딕셔너리를 다시 생성한다!

데이터 프레임으로 변환한다.

 

describe() 메서드는 다양한 통계량을 요약해준다.

 

성별 기준으로 나이의 총합 구하기

group1 = df['나이'].groupby(df['sex'])

sum()은 합계, mean()은 평균을 뜻한다.

 

위 방법과 다른 표현으로도 나타낼 수 있다.

df['나이'].groupby(df['sex']).agg([
                                    ('총합','sum'),
                                    ('최대','max'),
                                    ('최소','min'),
                                    ('사용자 정의',myFuncAgg),
                                     ('평균','mean')
                                    ])

 

이름으로 그룹화하고 몸무게의 통계치(집계함수/aggregation)을 출력하기

person ={'이름':['홍길동','홍말자','김개똥','홍길동','김개똥'],
         '나이':[26, 22 ,12,12,22],
         '몸무게':[87,11,13,17,19],
         'age':[12,23,34,23,17], 
         'sex':['M','F','M','F','M']
        }
person
df=pd.DataFrame(person)
print(df)

df['몸무게'].groupby(df['이름']).agg([
                                    ('총합','sum'),
                                    ('최대','max'),
                                    ('최소','min'),
                                     ('평균','mean')
                                    ])

 

group으로 그룹화하고 a의 통계치(집계함수/aggregation) 출력하기

df1 = pd.DataFrame(np.random.rand(4,4), columns=list('abcd'))
df1['group'] = [0,0,1,1]
print(df1)

df1.groupby('group').agg({'a':['sum','max'],
                         'b':'mean',
                          'c':'sum',
                          'd':lambda x:x.max()-x.min()
                         })

 

728x90
반응형
728x90
반응형
list1 = [10, 20, 30, 40, 50]
list1 = list(map(lambda x: x*10,list1))
print(list1)

def myFunc(x):
    return x*12
list3= list(map(myFunc,list1)) #list1=[100, 200, 300, 400, 500]
print(list3)

myFunc 함수는 들어오는 값마다 12를 곱해준다. 이것을 map을 이용하여 list1의 값들을 myFunc 함수에 적용한다.

 

def myFuncBool(x):
    return x%8==0
list4 = list(filter(myFuncBool, list1))  #list1=[100, 200, 300, 400, 500]
print(list4)

 

myFunBool 함수는 8의 배수를 반환 한다. 이것을 filter를 이용하여 list1의 값들을 myFunBool 함수에 적용한다.

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북을 사용하였다.

 

list에 sort()를 이용해보자 sort는 정렬이다!

 

a_list는 [12, 56, 11, 34] 배열을 가지고 있다 sort()를 적용하면

 

 

a_list안에 있던 값들이 오름차순으로 정렬된 것을 확인할 수 있다.

 

여기서 index() 를 이용하면 몇번에 위치하는지 알 수 있는데

오름차순한 a_list에서 11은 0번째에 있으므로 0이 떴고

 

sort를 reverse로 하여 반대로 정렬하고 난 후 11의 값이 3번째에 있다는 것을 알려준다.

 

다음은 insert()를 이용하는데 insert는 몇번째에 어떤 값을 넣을지 지정할 수 있다.

 

 

여기서 pop()를 이용하면 끝에있는 값을 가져온다.

 

 

문제) pop을 이용하여 데이터를 역순으로 정렬하기

a_list = [12, 56, 11, 34]
result=[]
list=len(a_list)
for i in range(0, list):
    result.append(a_list.pop())
print(result)

 

문제) pop 대신 remove를 이용하여 마지막 데이터 삭제하기

a_list = [12, 56, 11, 34]
a_list.remove(a_list[-1])
print(a_list)

 

* 리스트의 내용 갱신하기 -> 각각 10을 곱한 값으로 갱신!

list1 = [10, 20, 30, 40, 50]
i=0
for n in list1:
    list1[i] = n*10
    i=i+1
print(list1)

문제 ) 위의 값을 list comprehension으로 바꿔보기

[i*10 for i in list1]

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북을 이용하였다.

 

* list[0] : 0번째 리스트 값 가져오기* list[:3] : 0~2까지 리스트 값가져오기* list[2:] 2번째 부터 끝까지 리스트 값 가져오기

 

 

list()로 묶으면 알아서 슬라이싱 해준다!

 

문제 ) 문자열을 리스트로 변환하고 그 문자열의 갯수가 몇개인지 알기

str22="대한민국의 국민이 되는 요건은 법률로 정한다. 헌법개정안은 국회가 의결한 후 30일 이내에 국민투표에 붙여 국회의원선거권자 과반수의 투표와 투표자 과반수의 찬성을 얻어야 한다."
list1=list(str22)
len(list1)

 

리스트 안에 for문을 이용하여 값을 생성할 수 있다.

 

list[-2]는 뒤에서 2번째를 의미한다.

 

* append와 extend 

 

a_list가 ['a', 'b', 'c', 'd', 'e', 'f'] 인 상태에서 append와 extend를 사용해보자

 

append를 사용하면 [ ]도 생성되지만 extend는 문자열이 추가되었다.

 

* 중복 제거하기

 

a_list의 값이 [12, 56, 11, 'f', 'r', 't', 'f', 'r', 't'] 일때 중복을 제거해보자

distinct=set(a_list)
print(distinct)

* 해당되는 값 삭제

a_list.remove('c') #해당되는 값 삭제
print(a_list)

 

728x90
반응형
728x90
반응형

주피터 노트북에서 파이썬 예제를 돌려볼 것이다.

 

1. 구구단(2단~9단)

for i in range(2,10):
    for j in range(1,10):
        print('{}*{}={:2d}'.format(i,j,i*j),end = ' ')
    print('\n')

 

2. 2부터 100까지 소수 구하기

primes=[]
for n in range(2,10):
    #일단 n을 소수라고 두자
    is_prime = True
    for num in range(2,n): #2~(n-1) 사이의 수 num에 대하여
        if n%num==0: #이 수중 n의 약수가 있으면
            is_prime = False

    if is_prime:
        primes.append(n)
print(primes) # 주피터 노트북에서는 print를 안쓴다.

 

3. while문으로 누적합 구하기

result = int(input('누적할 숫자를 입력하세요'))
i=1
sum=0
while i<=result:
    sum += i
    i=i+1
    print('i={}, sum={}'.format(i,sum))

 

728x90
반응형
728x90
반응형

factorial을 파이썬으로 구현해 볼것이다.

 

n= int(input('수를 입력하세요 : '))
fact =1
for i in range(1,n+1):
    fact = fact*i
print('{}! = {}'.format(n,fact))

 

위 코드를 응용하여 함수로 만들어 볼 것이다.

 

def fac(n):
    fact =1
    for i in range(1,n+1):
        fact = fact*i
    return fact
n = int(input('수를 입력하세요 : '))
result = fac(n)
print('{}! = {}'.format(n,result))

728x90
반응형
728x90
반응형

function.py 에 입력한 코드이다.

 

이번엔 함수와 함수에 list를 응용할 것이다.

 

def a(i):
    print(i);

a(7); # 함수 호출
a([1,2,3,4,5]); #리스트

 

입력한 변수의 값까지 총합을 구하기

def sum(n):
    s = 0
    for i in range(1,n+1):
        s += i
    return s
print(sum(10))

 

list를 이용하여 list 안의 값들의 총합을 구하기

list = [1,2,3,4,5,11,20]
def sum(list):
  sum = 0
  for n in list:
    sum = sum + n
  return sum
print(sum(list))

728x90
반응형

+ Recent posts