본문 바로가기
패스트캠퍼스

[패스트캠퍼스] 파이썬 강의 1주차 / 파이썬설치(window, mac), 가상환경, 자료형, 변수, 연산, 제어문, 리스트, 반복문

by 리잼 2022. 8. 29.
반응형

내일배움카드취업을 사용해서 6개월 짜리 국비 개발 교육을 이수했지만 커리큘럼이 엉망진창이었어서

수료 후 다시 패스트 캠퍼스 교육을 듣게 되었다.

 

초반 내용은 대부분 아는 내용이지만 복습하는 느낌으로 다시 공부해보려고 한다.

 

파이썬

 

파이썬이란?

파이썬(Python)은 1990년 암스테르담의 귀도 반 로섬(Guido Van Rossum)이 개발한 인터프리터 언어

 

파이썬의 특징

  • 인간다운언어
  • 쉬운 문법 쉬운 습득
  • 무료
  • 강력하고 간결함
  • 빠른 개발 속도

파이썬 설치

위의 링크로 접속한 후 강의에 맞는 버전을 설치 해준다.

나는 이미 3.10.3 버전이 설치돼 있어서 그대로 사용하기로 했다. (추후에 문제가 없길. .제발..)

파이썬 공식 홈페이지
모든 프로그래밍의 시작 Hello world ~

설치 후 안녕세상을 입력하여 정상적으로 출력되는지 확인~

 

그러나 기본 파이썬 IDLE은 파일 관리와 코드를 작성하는데 불편함이 있기 때문에 따로 소스코드 편집기를 설치해야한다.

 

소스코드 편집기를 사용하는 이유

  • 폴더 및 파일 쉽게 정리가능
  • 코드 자동완성 기능
  • 디버깅 (오류수정) 용이
  • 유용한 단축키

VSC

VSC 설치

위의 링크 접속 후 다운로드를 클릭 후 설치해주면 된다.

VSC 설치 홈페이지
자신의 환경에 맞는 버전을 설치해주면된다.

기본 셋팅 완료 후 안녕세상을 출력해 봤다.

 

가상환경 설정

  1. VSC CMD 창 > python -m venv myvenv
  2. myvenv\Scripts\activate << 가상환경 접속
  3. pip list << 가상환경에 설치된 패키지 목록을 확인하는 명령어
  4. pip install requests << requests 패키지 설치 명령어

파이썬 설치 ( MAC )

나는 맥북도 있기 때문에 맥북에도 설치를 해줬다.

강의 중간에 장고프로젝트는 mac 환경에서 사용한다고하니 !

 

윈도우와 동일하게 같은 사이트에 설치를 해준다.

 

파이썬 패키지 파일
파이썬 3.10.* 설치 완료
안녕세상 출력 완료
VSC 에서도 확인

 

파이썬 숫자, 문자, Boolean 자료형

숫자 자료형

  1. 정수형 : 소수점이 없는 수
    ex ) 1, 2, 3, 4, 5 ...
  2. 실수형 : 소수점이 있는 수
    ex ) 1.0, 2.5, -3.2 ...

문자열 자료형

  • " " or ' ' 로 문자열을 사용할 수 있다.
    " " 으로 시작하면 ' '을 문장부호로 사용할 수 있고, 반대로도 가능하다
    ex) "오늘 저녁엔 '치킨'을 먹고싶다"

Boolean

  • True , False를 표현할 수 있는 자료형 한마디로 참과 거짓을 표현

파이썬 변수

변수

  • 데이터를 저장하는 공간
  • 언제든지 데이터를 변경할 수 있음

변수 이름을 짓는 규칙

  • 데이터를 표현할 수 있는 이름으로 작성
  • 문자부터 시작 
  • 대소문자 구분 : ABC , abc 는 다름
  • _ 로 시작할 수 있음 : _ABC
  • 이미 생성된 키워드(예약어)로는 사용할 수 없음 : Int , String 등등

변수 사용 예

# 변수
# 변수이름 = 데이터

# 롤 챔피언 데이터를 변수에 저장
name = "마스터이"
level = 5
hp = 800
attack = 90
print("챔피언 이름 : ", name,
    "챔피언 레벨 :", level,
    "챔피언 체력 :", hp,
    "챔피언 공격력:", attack)
    
# 결과 값 : 챔피언 이름 :  마스터이 챔피언 레벨 : 5 챔피언 체력 : 800 챔피언 공격력: 90

# 변수에 저장된 데이터 변경

level = level + 1
hp = hp + 50
attack = attack + 100
print("챔피언 이름 : ", name,
    "챔피언 레벨 :", level,
    "챔피언 체력 :", hp,
    "챔피언 공격력:", attack)
    
# 결과 값 : 챔피언 이름 :  마스터이 챔피언 레벨 : 6 챔피언 체력 : 850 챔피언 공격력: 100

파이썬 연산

연산의 종류

  • 대입연산
  • 산술연산
연산자 설명
+ 더하기
- 빼기
* 곱하기
/ 나누기
//
% 나머지
** 제곱
  • 비교연산
연산자 설명 ( 왼쪽이 오른쪽 보다)
> 크다
< 작다
>= 크거나 같다
<= 작거나 같다
== 같다
!=  다르다
  • 논리연산
연산자 설명
A && B ( AND ) A,B 모두가 참이라면 True
A || B ( OR ) A,B 하나라도 참이면 True
! A ( NOT ) A가 참이라면 False
  • 멤버십 연산
연산자 설명 ( 왼쪽이 오른쪽에 )
in 포함되어 있다
not in 포함되어 있지 않다

입력과 자료형 변환

데이터 입력

  • input() : 입력함수
  • 사용자로부터 데이터를 입력받는 함수
# 실습문제
# 사용자로부터 두개의 숫자를 입력받고 더한값 출력
x = input('첫번째 숫자를 입력하세요 :') # 20
y = input('두번째 숫자를 입력하세요 :') # 40

print("더한값은: ", x + y) # 2040 

# input 을 사용할때 따로 자료형을 지정해주지 않으면 str로 들어가기 때문에
# 20 + 40 은 2040 으로 출력된다 따라서 숫자형으로 변환해줘야한다.


x = int(input('첫번째 숫자를 입력하세요 :')) # 20
y = int(input('두번째 숫자를 입력하세요 :')) # 40

print("더한값은: ", x + y) # 60

# 자료형 확인하기 type()


# 실습문제2
# 사용자로부터 태어난 연도를 입력받으면 현재나이를 출력하기

year = int(input("태어난 연도를 입력하세요: ")) # 1995

age = 2022 - year + 1
print("현재 나이는", age ,"세 입니다") # 현재 나이는 28 세 입니다

제어문

제어문을 사용하는 이유

  • 프로그램은 기본적으로 위에서 아래로 순차적으로 실행된다
  • 명령 A,B 중 한 개를 선택해 실행하고 싶을때 - 조건문
  • 명령들을 반복해서 실행하고 싶을때 - 반복문

조건문

# 조건문
# : 조건에 따라 실행할 명령이 달라 지는 것

origin_pass = '1234'
input_pass = input("패스워드를 입력하세요 :")

if origin_pass == input_pass: # 조건 A
    print("로그인 성공") # 조건A가 참 일경우
elif input_pass == "": # 조건 B
    print("비밀번호를 입력하세요") # 조건 A 거짓 조건 B참 일경우
else:
    print("비밀번호가 틀렸습니다.") # 조건 A,B가 거짓일 경우

조건문 실습 문제

#실습문제 1
# 프로그램 사용자로부터 현재 구독자수를 입력받으면, 수익창출이 가능한지 불가능한지 알려주는 프로그램 작성
# 수익창출은 구독자는 1천명 이상일 경우 가능하다

sub = int(input("현재 구독자수를 입력하세요: "))

if sub >= 1000: # 구독자 천명이상
    print("수익 창출이 가능합니다.")
else: # 천명이 아닐경우
    print("수익 창출이 불가능 합니다.")

# 실습문제 2
# 공부시간을 채워야 휴대폰 잠금이 풀리는 프로그램을 작성해본다
# 조건 공부 10시간이상 : 휴대폰 잠금해제, 5시간 이상: 휴대폰 30분 가능, 나머지: 불가능

std_time = int(input("공부시간을 입력하세요: "))

if std_time >= 10: # 10시간 이상
    print("휴대폰 잠금이 해제 됩니다.")
elif std_time >= 5: # 5시간 이상
    print("휴대폰을 30분간 사용 가능합니다.")
else: # 그 이외 값
    print("휴대폰 사용이 불가능 합니다.")
    
# 실습문제 3
# 가진 금액으로 시킬수 있는 음식을 출력시킨다
# 조건 20000원 이상 : 치킨, 10000원 이상 : 떡볶이, 2000원 이상 : 편의점 김밥

money = int(input("현재 가진금액을 입력: "))

if money >= 20000:
    print("오늘 저녁은 치킨")
elif money >= 10000:
    print("오늘 저녁은 떡볶이")
elif money >= 2000:
    print("오늘 저녁은 편의점 김밥")
else:
    print("굶자 ㅠㅠ")

# 실습문제4
# 국어, 수학, 영어 성적이 입력된다
# 세 과목의 평균 점수가 80점 이상이면 합격 그러나 80점 이상이면 불합격이 표시되도록 작성
# 0 ~ 100의 사이의 숫자를 입력하지 않으면 잘못 입력하였습니다 출력

kor = int(input("국어 점수를 입력하세요 : "))
mat = int(input("수학 점수를 입력하세요 : "))
eng = int(input("영어 점수를 입력하세요 : "))

result = kor + mat + eng
avg = result / 3
print(avg)

# 중첩 조건문을 넣어 점수가 제대로 들어갔는지 확인 후에 메인 조건문 실행
if 0 <= kor <= 100 and 0 <= mat <= 100 and 0 <= eng <= 100: 
    if avg >= 80:
        print("불합격 입니다.")
    else:
        print("합격 입니다.")
else:
    print("잘못 입력하였습니다.")

리스트 자료형

리스트의 특징

  • 자료를 순서대로 한 줄로 저장하는 자료구조
  • 여러개의 자료가 한 줄로 저장되는 선형구조
    ex) Fruit = ['apple', 'banana', 'grape']
    Fruit[0] = apple, Fruit[1] = banana Fruit[2] = grape

리스트 사용 방법

  • 데이터 추가
    ex) Fruit.append('pear') >> Fruit = ['apple', 'banana', 'grape', 'pear']
  • 데이터 할당
    ex) Fruit[0] = peach >> Fruit = ['peach', 'banana', 'grape', 'pear']
  • 데이터 삭제
    ex) del Fruit[0] >> Fruit = ['banana', 'grape', 'pear']
  • 슬라이싱 >> A = [1,2,3,4]
    ex) A[0:2] >> [1,2]
  • 리스트 길이
    ex) len(A) = 4
  • 리스트 정렬
    ex) A.sort(Reverse=True) >> [4,3,2,1]
          A.sort() >> [1,2,3,4]

리스트 실습문제

# 실습문제 1

result = [33,40,12,63,52]

# 문제1
# 6번째에 9 추가
result.append(9) >> [33,40,12,63,52,9]

# 문제2
# 데이터에서 두번째 값을 50으로 변경
result[1] = 50
print(result) >> [33,50,12,63,52,9]

# 문제3
# 3번부터 6번까지데이터를 슬라이싱
print(result[2:6]) >> [12,63,52,9]

# 문제4
# 모든 데이터 오름차순 정렬
result.sort()
print(result) >> [9,12,52,63]

# 실습문제 2
# 턱걸이 평균측정 프로그램 작성
# 일주일간의 턱걸이 횟수를 입력받아 리스트에 저장
# ['20', '23', '16', '14', '24', '27', '30']

data = []

x=(int(input("1일차 턱걸이 횟수")))
data.append(x)
x=(int(input("2일차 턱걸이 횟수")))
data.append(x)
x=(int(input("3일차 턱걸이 횟수")))
data.append(x)
x=(int(input("4일차 턱걸이 횟수")))
data.append(x)
x=(int(input("5일차 턱걸이 횟수")))
data.append(x)
x=(int(input("6일차 턱걸이 횟수")))
data.append(x)
x=(int(input("7일차 턱걸이 횟수")))
data.append(x)

total = data[0] + data[1] + data[2] + data[3] + data[4] + data[5] + data[6]
avg = total/7
print(int(avg)) >> 22

위 실습문제 2번은 강사님의 정답이고 나는 다르게 풀어봤는데

For 반복문을 사용해서 풀 수 있지만 아직 배우지 않았다는 가정하에 풀어봤다.

a = []  # a라는 빈 리스트를 만들어주고
	# 다른 변수값에 값을 넣고 리스트에 넣어주는 방식이 아니라
        # 곧 바로 a 리스트에 넣어주고
 
a.append(int(input("1일차 턱걸이 횟수")))
a.append(int(input("2일차 턱걸이 횟수")))
a.append(int(input("3일차 턱걸이 횟수")))
a.append(int(input("4일차 턱걸이 횟수")))
a.append(int(input("5일차 턱걸이 횟수")))
a.append(int(input("6일차 턱걸이 횟수")))
a.append(int(input("7일차 턱걸이 횟수")))

result = sum(a)	# result 라는 결과값과 sum 이라는 함수를 사용해서 a 에 들어간 정수데이터를 합친후
print(result / len(a)) >> 22 # len 함수를 이용해서 총합과 7로 나누어 결과 값을 받아봤다

반복문

반복문 사용의 이유

  • 반복적인 작업을 코드로 작성하기 위해 사용된다.

시퀀스 자료형

  • 순서가 있는 자료형
    1. 리스트
    2. 문자열
    3. range 객체
    4. 튜플 딕셔너리

실습문제

# 실습문제 1
# 구구단 출력 프로그램
# 단수를 입력받아서 구구단을 출력한다

x = int(input("단수를 입력하세요: "))

for i in range(1,10): # 1부터 9까지 출력한다
    print(x,"*",i,"=", x*i) # 입력된 단수와 i를 곱함
    

# 실습문제 2
# 게임 메뉴 만들기 프로그램

while True:
    print("[메뉴를 입력하세요]")
    i = int(input("1. 게임시작 2. 랭킹보기 3. 게임종료")) #숫자를 입력받을 i 변수 선언
    if i == 1:
        print("게임을 시작합니다.")
    elif i == 2:
        print("실시간 랭킹")
    elif i == 3:
        print("게임을 종료합니다.")
        break                       # 3이 입력되면 종료
    else:                   
        print("잘못 입력하였습니다.") # 다른 숫자가 입력되면 출력되는 문구
        
# 실습문제 3
# 한글 받아쓰기 쓰기 프로그램
# 1. 연습할 한국어가 담긴 리스트 생성
# 2. 리스트에서 순서대로 단어를 가져와 화면 출력
# 3. 프로그램 사용자는 단어를 그대로 입력
# 4. 맞췄다면 다음 단어를 가져오고, 틀리면 프로그램 종료

# 내가 푼 정답 // 너무 꼬아서 생각 한 것 같다.. 단순하게 생각 할 필요가 있다고 느낀부분..
kor = ['사과','감자','포도','안녕', '자동차']

while True:
    for i in kor:
        print(i)
        ok = input()
        if i == ok:  # 바로 != 을 사용해도 됐는데 .. 왜 그랬을까 머리가 뜨거워져 눈이 멀면 이렇게 된다..
            print()
        else:
            break
    break

# 강사님 정답
word_list = ['사과','감자','포도','안녕', '자동차']

print("Let's Learning Korean")

for word in word_list:
    print(word)
    ok = input()
    if word != ok:
        break

# 실습문제 4
# 실습문제 3번에서 전체 문제, 맞힌 문제, 틀린 문제 개수 카운터 추가.

word_list = ['사과','감자','포도','안녕']

score = 0 # 점수 카운터

print("Let's Learning Korean")

for word in word_list:
    print(word)
    ok = input()
    if word == ok:
        score += 1 # 정답을 맞추면 1개씩 증가

print("전체 문제 갯수 : ", len(word_list))
print("맞힌 문제 갯수 : ", score)
print("틀린 문제 갯수 : ", len(word_list)-score)

 

1주차를 마무리 하며 느낀점

1주차는 딱히 어려운게 전혀 없었다. 임시저장을 하면서 블로그 게시글에 수업 내용 정리를 했고

게시글 첫줄에 적었던 대로 복습하는 마음으로 수업을 들었다.

코딩엔 정답이 없다는걸 예전부터 느끼는게 강사님과 다른 답이어도 결과는 동일했다. 

실습 문제 같은경우엔 정답을 안보고 다 풀 수 있었지만 마지막 반복문 문제에서 복잡해서 생각해버렸는지

순간 기억이 안나는 부분이 있어 당황했다. 단순하게 생각을 할 필요도 있는듯..

이정도 난이도의 문제를 못푼다면 .. 진짜 6개월 그 이상의 시간을 삽질을 한거나 마찬가지였을테니 ;;;

반응형