Python 266

[Python] ASCII code/문자 변환

ASCII code American Standard Code for Information Interchange, 미국 정보 교환 표준 부호 영문 알파벳을 사용하는 문자 인코딩 7비트 인코딩으로, 33개의 제어 문자와 공백을 비롯한 95개의 출력 가능한 문자로 이루어져 있다. 출력 가능한 문자는 52개의 알파벳 대소문자와 10개의 숫자, 32개의 특수 문자와 공백으로 이루어져 있다. ASCII 코드표 알고리즘 문제 등을 해결하다보면 문자열 범위 지정 등의 문제로 인해 숫자값으로 변환이 필요할 경우가 있다. 이 글에서는 Python에서 문자의 ASCII code 값으로 변환하고, ASCII code 값을 문자로 변환하는 방법을 적어둔다. ord() 특정 한 문자를 ASCII code 값으로 변환하는 내장 함..

Python 2021.12.28

[eval] 문자열 식 실행

eval 문자열형의 식을 입력받아 그 실행 결과를 반환하는 함수 예시 print(f"1 + 2 = {eval('1 + 2')}") print(f"1 == 2 = {eval('1 == 2')}") 함수의 실행 결과도 반환할 수 있다. print(eval("print('hello')")) 주의점 간편하고 강력하지만 사용자의 입력값을 eval 함수로 실행시키는 등의 코드는 사용하지 않도록 한다. 해킹의 위험성이 존재하기 때문이다. 간단한 예를 통해 알아보자. 예시 코드 아래 코드는 사용자가 입력한 수식을 계산하여 출력하는 코드이다. def input_eval(): user_input = input("enter expression: ") return eval(user_input) print(input_eval(..

Python 2021.12.17

[Python] 변수에 함수 저장

파이썬에서 함수는 1급 객체(first-class object)이다. 1급 객체(first-class object) 프로그래밍 언어 디자인에서 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체 보통 함수에 매개변수로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원하는 객체를 말한다. 이 글에서는 1급 객체의 조건 중 하나인 변수에 함수를 할당하여 사용하는 방법에 대해 다룬다. 기본 사용 테스트 함수 두 수를 입력받아 그 합을 반환하는 더하기 함수를 예시로 들고자 한다. def plus(a, b): return a + b 변수에 테스트 함수 할당 result라는 변수에 테스트 함수를 할당한다. 함수를 호출해 반환 값을 변수에 저장하는 것과 함수를 변수에 저장하는 것의 차이를 구분해야 ..

Python 2021.11.23

[list] 리스트 컴프리헨션

리스트 컴프리헨션 (list comprehension) 기존의 리스트를 이용해 새 리스트를 만드는 방법 기존 리스트 생성과 동일하게 대괄호를 이용하나, 대괄호 내에 for 문, if 문 등의 코드를 넣어 리스트를 생성한다. 기본 구조 및 동작 순서 코드 전통적인 방식으로 리스트를 선언하는 것과 리스트 컴프리헨션을 사용하여 선언하는 것을 비교해보자. # 전통적인 방법 number_1 = [] for i in range(10): number_1.append(i) print("number_1", number_1) # 리스트 컴프리헨션 number_2 = [i for i in range(10)] print("number_2", number_2) 실행 결과 실행 시 두 개의 리스트가 동일한 값으로 생성되었음을 알..

Python 2021.11.21

[Selenium] 명시적 대기 (Explicit Wait)

2021.11.09 - [Selenium] 암시적 대기(Implicit Wait) 위 글에서는 Selenium의 대기 방식 중 웹 페이지가 모두 로딩될 때까지 기다리는 암시적 대기 방식에 대해 다뤘다. 이 글에서는 Selenium의 대기 방식 중, 명시적 대기 방식에 대해 다룬다. 명시적 대기 (Explicit Wait) 지정한 요소가 웹 페이지 내에서 지정한 조건을 만족할 때까지 기다린다. 필요성 Ajax를 이용해 동적 변경이 발생하는 웹 페이지인 경우 Web Elemnet가 나타날 때까지 시간이 걸릴 수 있는데, Web Element가 나타나기 전에 참조하고자 하면 오류가 발생할 수 있으므로 대기하는 시간이 필요하다. 암시적 대기는 웹 페이지 전체가 로딩될 때까지 기다리는 반면 명시적 대기는 특정 요..

Python 2021.11.13

자릿수를 맞춰 숫자 출력 - zfill, rjust

2021.11.03 - [format] 자릿수를 맞춘 숫자 출력 이전 글에 이어, format 함수 외에 사용할 수 있는 자릿수를 맞춘 숫자 출력 방법에 대해 적는다. zfill() 문자열 앞을 0으로 채운다. 코드 n = 32 print(str(n).zfill(5)) 실행 결과 숫자형 데이터인 경우 string으로 형변환이 필요하며, 매개변수의 값이 반환하는 문자열의 길이다. rjust(n, s) 문자열을 오른쪽으로 정렬하여 반환한다. 첫번째 매개변수는 반환하는 문자열의 길이에 해당하며, 두번째 매개변수는 공백을 채우는 문자에 해댕한다. 코드 n = 32 print(str(n).rjust(5, '0')) 실행 결과

Python 2021.11.10

[Selenium] 암시적 대기(Implicit Wait)

암시적 대기(Implicit Wait) Driver 객체가 get(url)로 요청한 페이지의 내용이 모두 로딩을 완료할 때까지 암묵적으로 대기한다. 필요성 Python으로 Selenium을 조작할 때 Python은 Selenium으로 신호를 보내고, Selenium은 웹 브라우저로 신호를 보낸다. 웹 브라우저는 접속하고자 하는 서버에 웹 페이지를 보여달라는 신호를 보내고, 서버는 HTML, CSS, Javascript 등으로 구성된 웹 페이지를 웹 브라우저로 보낸다. 그리고 웹 브라우저는 전달받은 정보를 화면으로 변환해서 눈으로 보여준다. 이 과정에는 시간이 필요하다. Selenium은 실제로 웹 브라우저를 동작시키기 때문에 driver.get()으로 URL을 호출하자마자, 접속하고자 하는 서버로부터 데..

Python 2021.11.09

[Selenium] 테이블 읽기

Selenium을 이용해 테이블 내의 데이터를 읽으려고 한다. 그러기 위해서는 먼저 HTML에서 테이블을 구성하는 방법에 대해 알아야 한다. HTML - Table Tag HTML에서 Table을 구성하는 태그는 아래와 같다. 태그 설명 행과 열로 구성된 2차원 테이블을 정의 HTML 테이블에서 헤더 콘텐츠(header content)들을 하나의 그룹으로 묶을 때 사용 HTML 테이블에서 제목이 되는 헤더 셀(header cell)을 정의할 때 사용 HTML 테이블에서 내용 콘텐츠(body content)들을 하나의 그룹으로 묶을 때 사용 테이블에서 셀들로 이루어진 하나의 행(row)을 정의할 때 사용 HTML 테이블에서 하나의 데이터 셀(data cell)을 정의할 때 사용 HTML 테이블에서 푸터 콘..

Python 2021.11.06

[format] 자릿수를 맞춘 숫자 출력

정수형, 실수형과 같은 숫자 데이터를 다루다 보면 소수점 이하 둘째 자리까지 출력하거나, 또는 세 자리의 정수로 출력하는 등 자리 수를 맞춰서 출력을 해야 할 때가 있다. 즉, 문자열 포매팅 방법에 대해 적어본다. str.format() 서식 지정자(format indentifier)를 사용하여 문자열을 출력한다. 문자열의 중괄호 내에 지정된 키로 매개변수에서 값을 찾아 대입하여 문자열을 만든다. 여기서 키는 매개변수의 위치값인 인덱스가 될 수도 있으며, 인덱스는 0부터 시작한다. a = "index_0" b = "index_1" # index print("{1}".format(a, b)) # key print("{a} {b}".format(a=a, b=b)) 자릿수 지정 서식 출력할 값과 서식은 콜론(..

Python 2021.11.03

[math] 최소공배수, 최대공약수

2021.09.28 - [재귀 호출] 최대공약수 구하기 / 피보나치 수열 [재귀 호출] 최대공약수 구하기 / 피보나치 수열 최대공약수 최대공약수 Greatest Common Disiver, GCD 두 개 이상의 정수의 공통 약수 중 가장 큰 값 방법 1. 정수 중 작은 값부터 1씩 감소시키면서 약수인 값을 찾는다. 2. 유클리드 알고리즘 a와 b의 최 passwd.tistory.com 위 글에서 재귀 호출을 이용해 최대공약수를 계산하는 알고리즘에 대해 다루었다. 최대공약수를 구할 수 있다면 최소공배수도 자연스럽게 구할 수 있다. 두 수의 곱을 최대공약수로 나눈 값이 최소공배수이기 때문이다. $$ gcd(a,b)*lcm(a,b)=a*b $$ 그렇다면 Python으로 최대공배수/최대공약수를 계산할 때 반드시..

Python 2021.11.02