반응형
스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차
2022.09.01. 4일차 - TIL
1. 파이썬 문법 뽀개기
- 파이썬 연산
a=7
b=2
a/b #3.5(실제값)
a//b #3(몫)
a%b #0.5(나머지)
a**b #49(제곱)
- 파이썬 내장함수
sentence.upper() #대문자로 바꾸기
sentence.lower() #소문자로 바꾸기
sentence.replace(문자1, 문자2) #문자열에 있는 문자1을 문자2로 교체
- 문자열 인덱싱과 슬라이싱
#문자열은 문자들의 모임으로 그 일부를 따로 떼어 부르는게 가능
f = "abcdefghijklmnopqrstubwxyz"
f[1] #b -> 인덱싱
f[4:15] #efghijklmno -> 슬라이싱, index가 4부터 14까지
f[8:] #index가 8부터 끝까지
f[:7] #index가 처음부터 6까지
f[:] #처움부터 끝까지
#split('문자열') --> 특정 문자열로 자르고 싶을 때
myemail = 'abc@sparta.co'
domain = myemail.split('@')[1].split('.')[0]
- 리스트 정렬
a = [2, 5, 3]
a.sort() # [2, 3, 5] -> 오름차순
a.sort(reverse=True) # [5, 3, 2] -> 내림차순
- 특정 요소가 리스트 안에 있는지 확인
a = [2, 1, 4, "2", 6]
print(1 in a) # True
print("1" in a) # False
print(0 not in a) # True
- enumerate() 함수 : 인덱스와 원소를 동시에 접근하면서 루프를 돌리고 싶을 때 사용
fruits = ['사과', '배', '감', '귤','귤','수박','참외','감자','배','홍시','참외','오렌지']
for i, fruit in enumerate(fruits):
print(i,fruit)
- 튜플 : 리스트처럼 인덱스로 자료에 접근하지만 리스트와 달리 요소값 변경 불가
- 집합 - set()
- f-string : 변수를 더 직관적으로 문자열로 만들기
for s in scores:
name = s['name']
score = str(s['score'])
print(f'{name}은 {score}점입니다') #넣고자 하는 변수값은 중괄호로
- try-except문(예외처리)
#에러가 있을 때 건너뛰게 하는 방법
for person in people:
try: #이렇게 시도해보고
if person['age'] > 20:
print (person['name'])
except: #에러 발생 시 여기로 넘어옴
name = person['name']
print(f'{name} - 에러입니다')
- 파일 불러오기
from 불러올파일명 import *
#다른 파일에 있는 함수 사용 가능
say_hi()
- 한줄 표현
- if의 삼항 연산자
num = 3
# (참일 떄 값) if (조건) else (거짓일 때 값)
result = "짝수" if num%2 == 0 else "홀수"
print(f"{num}은 {result}입니다.")
- for의 요약
a_list = [1, 3, 2, 5, 1, 2]
b_list = [a*2 for a in a_list]
print(b_list)
- map - 리스트의 모든 원소 조작
def check_adult(person):
if person['age'] > 20:
return '성인'
else:
return '청소년'
# map(a, b) -> b의 모든 요소에 a를 적용시킴
result = map(check_adult, people)
print(list(result))
- lambda
# lambda 매개변수 : 표현식
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))
- filter
# map과 유사하지만 true인 것들만 뽑기
result = filter(lambda x: x['age'] > 20, people)
print(list(result))
2. 웹 프로그래밍 A-Z
- 웹 배포 방법
1) AWS EC2 서버 구입
- 인스턴스 생성(os는 ubuntu 18.04 또는 20.04로 설치)
- 해당 인스턴스의 22번 포트 열어놓기(아마 열려있을 것)
2) AWS EC2에 접속
- 윈도우는 git bash 필요
- git bash에 명령어 ssh -i 받은키페어끌어놓기 ubuntu@AWS에적힌내아이피(이후 yes 입력)
3) 서버세팅하기(git bash에)
# python3 -> python
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
# pip3 -> pip
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# port forwarding
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
4) filezilla를 통해 간단한 python 파일 올리기
5) pip로 패키지 설치
pip install flask
pip install pymongo dnspython
6) AWS에서 5000포트 열어주기
7) 파이썬 파일 실행 후 크롬에서 접속하기
8) nohup 설정(ssh 접속이 끊어도 서버가 계속 돌게 하기) -> ssh 접속 종료 후 크롬에서 다시 접속
# 아래의 명령어로 실행하면 된다
nohup python 파이썬파일명 &
#서버 강제종료 방법
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill
9) 가비아에서 도메인 구입 후 연결(호스트 이름에 @, ip주소에 내서버의ip)
*ssh : 다른 컴퓨터에 접속할 때 쓰는 프로그램으로 보안이 상대적으로 뛰어남
- og 태그
<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="이미지URL" />
3. 파이썬 알고리즘 풀이(with 백준)
기본 파이썬 입출력 문제를 풀었는데 그 중에서 다른 문제보다 조금 더 오래 붙잡고 있던 문제는 다음과 같다.
a = int(input())
b = input()
b_re = list(map(int, b))
pos1 = a*b_re[2]
pos2 = a*b_re[1]
pos3 = a*b_re[0]
#또는 이런것도 가능
#pos1 = a*int(b[2])
#pos2 = a*int(b[1])
#pos3 = a*int(b[0])
result = pos1+pos2*10+pos3*100
print(pos1)
print(pos2)
print(pos3)
print(result)
4. 후기
오늘도 full로 채워서 공부했다. 생각보다 이거저거 글로 남겨야 하는 부분들이 많은 것이 조금 귀찮긴 하다.(일기도 삼일이상 못 쓰는 사람인데....) 지금 푸는 백준문제는 단순 입출력, 연산 문제이지만 앞으로 마주하게 될 엄청난 자료구조 알고리즘 구현이 두렵다. 그때는 지금보다 실력이 많이 나아져 있기를....
반응형
'개발일지 > AI 캠프' 카테고리의 다른 글
내일배움캠프 AI - 1주차 WIL (1) | 2022.09.04 |
---|---|
내일배움캠프 AI - 5일차 TIL, 2022.09.02 (0) | 2022.09.02 |
A2조 - KPT 회고 (0) | 2022.09.01 |
내일배움캠프 AI - 3일차 TIL, 2022.08.31 (0) | 2022.09.01 |
내일배움캠프 AI - 2일차 TIL, 2022.08.30 (0) | 2022.08.30 |