나처럼 프로그래밍을 할때마다 다시 IDE 작동과 디버깅, 입출력 정하기 등등에서 2시간씩 다시 공부해야하는 사람들,,
분명히 있을거라 생각한다.
어쨌든, 매번 2,3시간씩 다시 할애해야하는 이 번거로움을 줄이기 위해서
이번에는 입출력 넣고 디버깅하는것까지는 확실하게 공부하고 정리를 해두려고 한다.
python 기초 언어, 그리고 python 의 기본제공 IDE인 pythonIDLE 활용!!
(IDE란, 통합개발환경 Integrated Development Environment의 약자로 코딩하는 것을 돕는 환경을 제공하는 프로그램이다. 디버깅, 컴파일링 등을 한다.
IDLE에서 L은 IDE에 학습learning의 약자가 추가된것으로, 인터프리터의 기능을 기본으로 하는 것에서 추가된 부분인것 같다)
2. python 기본 언어
- 형
기본 : 문자열, 숫자(int)
추가 : 리스트[1,2,3], 딕셔너리{key:value, key0:value0...}, 튜플(1,2,3), 집합
선언 : [ ] 또는 list(), {:} 또는 dict(), ( ), set(리스트) 또는 {1,2,5,3,2}꼴
- 거듭제곱사용하기
파이썬에서는 거듭제곱은 **로 사용한다.
- 슬라이스사용하기
파이썬에서는 문자를 배열로서 활용할 수 있으므로 이와 같이 복합적으로 사용하면 편리
word = 'Python'
word[0] = 'P' #0이 인덱스의 시작점
word[-2] = 'o' #음의 인덱스는 -1에서 시작
word[2:5] = 'tho' #슬라이스사용
word[-2:] = 'on'
- 리스트연산, 생성, 삭제
리스트에 (마지막에)추가하기 : list.append(추가할 요소(관한식도가능))
# list.insert(인덱스,추가내용)은 O(N)에 수행되어서 이왕이면 append를 사용하는것이 좋다. remove도 O(N)이다.
# 딕셔너리는 dict(키).append(내용) 으로 추가한다
리스트 마지막 내용 제거 : list.pop()
리스트의 길이 : len(list)
이터레트용 리스트 : range(n) = [0, 1, ..., n], range(5, 10) = [5,6,7,8,9], range(0, 10, 3) = [0,3,6,9]
- 컴프리헨션
iteration 적인 상황에서 발생하는 데이터를 list, dictionary, set 등으로 만드는 문법
for i in range(10):
arr.append(i*2)
# 한줄로는 이렇게 가능하다 arr = [i*2 for i in range(10)]
# 조건을 추가
arr = [n for n in range(10) if n%2 == 0]
# 다중으로 만들기
arr = [[n for n in range(m+1)] for m in range(3)]
# 딕셔너리의 예시
class_info = {idx : student for idx.student in enumerate(students)}
컴프리헨션을 입력받는 함수들
sum(num for num in range(1, 4)) # =6
max(num for num in range(1, 4)) # =3
min(num for num in range(1, 4)) # =1
all(num < 4 for num in range(1, 4)) # =True
sorted(num for num in [4,3,2]) # =[2,3,4]
- 조건문(if) 루프 (for, while)
if, elif, else
for 변수 in 리스트: 형태로 쓰임
while(조건): 조건이 참일때 실행되는 내용이 body가 된다.
while True : 는 무한루프인셈이다.
break, continue, pass로 부수적인 조절을 할 수 있다.
- 형변환
문자열로 str( )
리스트로 list( )
정수형으로 int( )
딕셔너리를 리스트형으로 dict.items( )
집합으로 set( )
옮차순으로 a.sorted()
a.sort() # 오름차순정렬해서 출력
- 기본 함수 정의하기
det 함수명(매개변수):
내용
return 반환값
함수안에서 함수 밖의 데이터를 변경해야할 경우 global 사용
c = 0
def add(a,b):
global c
c = a+b
return c
예시
- 람다함수 정의하기
lambda 매개변수: 수행내용
으로 끝.
(lambda 매개변수: 수행내용)(입력값) # ==리턴값 임을 활용하게된다.
디테일
1. 문자열 (연산은 +, *가 가능)
문자갯수세기 a.count(' ')
위치알려주기 a.find(' ') # 없으면 -1을 반환한다
a.index(' ') # 없으면 오류 발생
문자열 삽입하기 " ".join(' ')
대문자(소문자)로 바꾸기 a.upper() a.lower()
왼쪽공백지우기 a.lstrip()
문자열바꾸기 a.replace(' ', ' ', 숫자)
문자열나누기 a.split('') # 디폴트는 띄어쓰기
문자가숫자인지검사 a.isdigit()
글자인지 기호인지 검사 a.isalnum() # bool형으로 출력
2. 리스트를 출력하는 함수들 (정렬)
range(부터, 전까지, 간격으로) # range(1,5,1) = range(1,5) = [1,2,3,4]
enumerate(리스트) = {인덱스 : 원소}
Counter(리스트) = counter({원소 : 갯수})
sorted(리스트, 키, 조건) = [오름차순 정렬]
# 딕셔너리의 경우 sorted(딕셔너리.item()) = [키를 기준으로 정렬한 리스트]
# 딕셔너리의 경우 sorted(딕셔너리.item(), key = lambda x : x[1]) = [벨류기준]
# 딕셔너리의 경우 sorted(딕셔너리, key = lambda x : 딕셔너리[x]) = [벨류기준]
dict(zip(리스트1, 리스트2)) # zip은 리스트, 튜플, 딕셔너리 등을 묶어주는 함수
3. 입출력
테스트 환경에서는 입력은 신경 안써도 될 때가 있지만, 짧은 코드를 구현하는게 아니라고 생각하면 입출력에 대해 정리를 해두는게 좋을거 같았다.
파이썬에서 가장 기본으로 사용하는 입력 함수는 input()
출력함수는 print()
sys 모듈의 sys.stdin.readline()도 가능하다. (대입하여 사용)
inputcontents = '1 5 3 9 10' #기본적으로는 문자열이 입력된다고 생각해야함 그래서 문자열을 다루는 함수를 좀 알고있으면 유용할 듯 하다
n = int(input()) #데이터의 갯수를 n에 저장
# 5
inputlist = list(map(int, input().split())) #공백으로 구분하여 순서대로 리스트화하여 inputlist에 저장
# [1,3,5,9,10]
a, b, c, d, e = map(int, input().split()) #공백으로 구분하여 들어돈 순서대로 대입
# a = 1, b = 5, c = 3, d = 9, e = 10
print(a,b)
# 1 5
print("가장 작은 수는" + str(a) + "입니다.")
# 가장 작은 수는1입니다. +대신 ,를 사용해도 됨 단, ,는 공백이 자동으로 들어감
print(f"가장 작은 수는{a}입니다")
# 버젼상 안될 수도 있는 방법
4. python IDLE, pycharm은 전편에 정리해둠
파이썬 코딩테스트 공부하기 1편 (tistory.com)
- python, 기본제공되는 IDE
- Pycharm, Visual Code
나는 이렇게 두개를 설치해 사용하고있(?) 으려고한다. 파이참은 파이썬에 최적화된 프로그램으로 알고있으며, 삼성 등 여러 기업코드테스트에서 사용하고 있는 프로그램이라서 익숙해지면 좋은듯 하다. 비주얼코드는 비주얼스튜디오의 가벼운 버젼인듯다. 일단 인터페이스나 컴파일링을 위한 환경구성 과정이 더 간편했던것 같다.나는 전에 전공을 로봇으로 나오면서 학교에서 들은 수업으로는 C언어를 쓸일이 더 많았는데, 여러 언어를 범용적으로 사용하면서도 그리 무거운 코드를 작성하는게 아니었기 때문에 비주얼코드가 그 상황에서는 가장 적절했다.
고찰 및 예제 오답노트
공부할게 정말 너무 많구나 하는 생각을 했다.
어쨌든 특히 입출력이나 유용한 생성함수들은 암기해두지 않으면 후에 코드를 구성하는 방법에도 영향이 있을거 같아 보였다. 여러 책들을 읽으면서 참고한 내용이라서 두서없지만 계속 다시 보고 수정하다보면 나만의 노트를 완성할 수 있을것 같다.
파이팅!!!!!!
예제는 프로그래머스예제들을 풀면서 한개씩 추가하려고 한다.
'소프트웨어 공부 > python 그런데 빅데이터를 곁들인' 카테고리의 다른 글
파이썬 코딩테스트 공부하기 3편 - 알고리즘 기본이론 (자료구조) * (0) | 2024.08.22 |
---|---|
파이썬 코딩테스트 공부하기 1편 (0) | 2024.07.11 |
Python 개발 공부 Kivy편 (02) layout과 widget 소개 (0) | 2024.02.22 |
Python 개발 공부 Kivy편 (01) Kivy getting started, pycharm 개발환경구축 (0) | 2024.02.19 |
파이썬 기초공부 #2. COS 샘플문제풀기 2차 (0) | 2024.01.01 |