A ship in harbor is safe, but that is not what ships are built for.

개발일지/AI 캠프

내일배움캠프 AI - 4일차 TIL, 2022.09.01

플리피나리 2022. 9. 2. 09:44
반응형

스파르타 코딩클럽 내일배움캠프 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로 채워서 공부했다. 생각보다 이거저거 글로 남겨야 하는 부분들이 많은 것이 조금 귀찮긴 하다.(일기도 삼일이상 못 쓰는 사람인데....) 지금 푸는 백준문제는 단순 입출력, 연산 문제이지만 앞으로 마주하게 될 엄청난 자료구조 알고리즘 구현이 두렵다. 그때는 지금보다 실력이 많이 나아져 있기를....

반응형