* 준비
1. Python 설치
2. PyCharm 설치
3. GitHub 설치
4. 마음가짐
# 변수 = Variable
>변수란 객체를 가리키는 것
변수명 = 할당할 객체
a 에 1을 할당한다. (정수형 int)
b 에 [2, 3, 4]를 할당한다. (리스트 list)
c 에 (5, 6, 7.1)을 할당한다. (튜플 tuple, 실수형 float)
d 에 'Hello' 를 할당한다. (문자열 str)
우변을 좌변에 대입한다.
문자에는 '', "" 을 사용해야한다.
정도로 이해하면 편할듯 하다.
※ 주의할점 : 평소 사용하던 = 의 의미는 '같다'이기 때문에, 조건문 등에서 '같다'의 의미를 사용할 경우엔 ==를 사용해야 한다.
>변수명은 내용이나 뜻을 알 수 있게 해주는게 좋다.
나중에 보거나, 다른사람이 볼때 어느정도 예측할 수 있을정도면 좋다.
>변수명에 대한 간단규칙
변수명은 대,소문자를 구분한다.
변수명은 숫자로 시작할 수 없다.(중간, 맨끝에는 숫자가 들어갈 수 있다.)
변수명에 띄어쓰기가 안되기 때문에 다음 두가지 타입을 많이 사용한다.
updateeventfrompage (보기나쁜타입)
updateEventFromPage (카멜타입)
update_event_from_page (파스칼타입)
>파이썬은 변수의 타입을 스스로 선언한다.
쉽게 변수를 선언할 수 있으나, 스스로 타입을 선언하는 특성으로 인해 메모리의 효율적인 관리는 제한된다.
#주석
프로그래머를 위한 의사소통 수단.
프로그램 소스에 설명문을 달 때 사용한다.
>한줄주석
#에서 그 줄 끝까지 문장은 프로그램 수행에 전혀 영향을 주지 않는다.
>여러줄 주석 """ """, ''' '''
>함수안에 들어간 여러 줄 주석은 소스와 동일한 들여쓰기를 해야함
들여쓰기 안했을때 나타나는 에러
IndentationError: expected an indented block
> #은 들여쓰기 하지 않아도 가능
sum = 0
for num in range(1,101):
if num % 2 == 0:
# num 값을 2로 나눴을때 나머지가 0과 같은가?
sum = sum + num
print(sum)
>Pycharm에서 주석 단축기
드래그 후 ctrl + / : 주석처리, 해제 모두 가능
# 리스트 [List] > 다른언어에서는 배열이라고 부른다.
리스트를 만들때는 대괄호를 이용한다 []
리스트 내용에 대해 추가, 삭제, 수정이 가능하다.
리스트의 첫번째 자리에 있는 값은 1번째가 아닌 0번째 이다.
리스트에 있는 값에 접근할때 변수명뒤에 대괄호를 붙여 접근한다.
aList = [1, 3, 5, 7]
print(aList[0])
출력 : 1
# 튜플 (Tuple) > 리스트와 형태는 같으나, 내용에 대한 추가, 삭제, 수정이 불가능하다.
튜플을 만들때는 소괄호를 이용한다 ()
myTuple = (1, 3, 5, 7)
print(myTuple[1])
출력 :
1
myTuple = (1, 3, 5, 7)
myTuple[0] =2
<div style="font-family: dotum; font-size: 13.3333px; white-space: normal;"><div style="font-size: 13.3333px;">Traceback (most recent call last):</div><div style="font-size: 13.3333px;"> File "C:/Users/kim/PycharmProjects/week1/python-starter/training_190211.py", line 54, in <module></div><div style="font-size: 13.3333px;"> myTuple[0] =2</div><div style="font-size: 13.3333px;">TypeError: 'tuple' object does not support item assignment</div></div>
튜플에 저장된 0번째 값을 2로 재 할당 하려하면 이러한 에러가 생긴다.
# input함수
사용자 입력을 받는 함수
기본구조
변수 = input()
# 딕셔너리 {Dictionary}
딕셔너리를 만들때는 중괄호를 이용한다 {}
키와 밸류 형태를 갖는다. {키 : 밸류}
밸류값에는 모든 자료형이 들어갈 수 있다. (숫자형, 문자열, 리스트, 딕셔너리 등등)
딕셔너리에 접근할때 대괄호로 접근한다 [] (변수[키값] 입력시 밸류값이 출력된다.)
myDict = {'candy' : 300, 'gun' : 1500, 'watch':2000}
print('무엇을 구매하시겠습니까? : candy, gun, watch')
name = input()
print(name, '의 가격은', myDict[name], '원 입니다')
출력 :
무엇을 구매하시겠습니까? : candy, gun, watch
candy
candy 의 가격은 300 원 입니다
밸류값에 밸류값이 들어가있는 경우
myDict = {'shop':{'candy':300}}
print(myDict['shop']['candy'])
출력 : 300
myDict['shop']의 밸류값은 {'candy':300}
# 집합을 정의하는 자료형
set 함수를 이용한다
중복을 허용하지 않는다.
순서가 없다.
s1 = set('hello')
print(s1)결과 :
& 교집합
| 합집합
- 차집합
s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7, 8])
print(s1 & s2)
print(s1 | s2)
print(s1 - s2)
결과 :
{4, 5}{1, 2, 3, 4, 5, 6, 7, 8}{1, 2, 3}
# 연산자
연산자 | 의미 |
** | 제곱 |
// | 몫 |
% | 나머지 |
x <= y | x가 y보다 작거나 같다 |
x >= y | x가 y보다 크거나 같다 |
== | 같다 |
!= | 같지 않다 |
and | 둘 모두 참이어야 참 |
or | 둘중 하나만 참이면 참 |
not | 역(반대) |
# range함수
숫자 리스트를 자동으로 만들어 주는 함수이다.
range(1, 11)은 숫자 1부터 10까지(1 이상 11 미만)의 숫자를 데이터로 갖는다.
# for 반복문
반복을 위해 사용한다.
기본 구조
for 변수 in 리스트(튜플, 문자열):
수행할문장1
수행할문장2
...
의미 : 변수에 리스트(튜플, 문자열)의 0번째 값부터 차례로 넣으며(in) 수행할 문장을 진행한다.
myList = ['one', 'two', 'three']
for i in myList:
print(i)결과 :
onetwothree
※주의사항 : 들여쓰기(tab, 띄어쓰기4번), : 를 잘 확인해야 한다.
# 불 자료형
True - 참
False - 거짓
숫자의 경우 0을 제외한 모든수가 참이다. (정수, 음수, 실수 등등)
문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어있으면(' ', [], (), {}) 거짓이다.
# if조건문
조건을 판단하여 해당 조건에 맞는 상황을 수행하는 것
기본구조
if 조건문 :
수행할문장1
수행할문장2
...
elif 조건문:
수행할문장a
수행할문장b
...
else:
수행할문장A
수행할문장B
...
elif는 이전조건이 참이 아닐때 수행한다.
else는 if와 elif를 모두 수행해도 참이 아닐때 마지막에 수행한다.
다양한 조건을 판단해야 할때에는 elif를 여러개 사용할 수 있다.
※주의사항 : 들여쓰기(tab, 띄어쓰기4번), : 를 잘 확인해야 한다.
* 연습문제
1~100까지의 숫자중 짝수들의 합을 구하고싶다.
sum = 0
for num in range(1,101):
if num % 2 == 0:
sum = sum + num
print(sum)
결과 : 2550
풀이
합을 저장하는 변수 선언필요 sum = 0
반복해서 숫자들의 합을 구해야 하기 때문에 for함수 활용, 연속된 숫자의 리스트를 위해 range함수 사용
짝수를 판별하기 위해 나머지연산자 %를 활용
num의 값이 2로 나눴을때 나머지가 0과 같은가? 참이면 짝수, 아래의 sum계산을 진행, 거짓일때는 num값의 range에 의해 1증가
조금더 간결하게 쓰기위해 변형
sum = 0
for num in range(2, 101, 2):
sum = sum + num
print(sum)
결과 : 2550 동일
* 연습문제 2
혈액형 리스트중에 혈액형 입력시 리스트내에 입력한 혈액형의 개수를 출력하고싶다.
bloodList = ['A', 'B', 'O', 'AB', 'B', 'O', 'A', 'A', 'AB', 'A', 'B', 'AB', 'O', 'B', 'O']
bloodList = ['A', 'B', 'O', 'AB', 'B', 'O', 'A', 'A', 'AB', 'A', 'B', 'AB', 'O', 'B', 'O']
acount = 0
bcount = 0
ocount = 0
abcount = 0
bloodname = input('혈액형을 입력하세요 (A, B, AB, O) : ')
for blood in bloodList:
if blood == 'A':
acount = acount + 1
elif blood == 'B':
bcount = bcount + 1
elif blood == 'O':
ocount = ocount + 1
elif blood == 'AB':
abcount = abcount + 1
if bloodname == 'A':
print('A혈액형은', acount, '개 입니다.')
elif bloodname == 'B':
print('B혈액형은', bcount, '개 입니다.')
elif bloodname == 'O':
print('O혈액형은', ocount, '개 입니다.')
elif bloodname == 'AB':
print('AB혈액형은', abcount, '개 입니다.')
B 입력결과 :
혈액형을 입력하세요 (A, B, AB, O) : B
B혈액형은 4 개 입니다.
풀이
혈액형별 갯수를 저장할 변수 선언이 필요
리스트의 값을 반복비교하여 선언한 변수에 저장하기 위해 for문 사용
for문 사용시 조건판단을 위해 if함수 사용
사용자의 값을 입력받기위해 input함수 사용
입력값에 대한 출력결과를 위해 if함수 사용
#회고
함수 처음 사용시 비교를 위해 =가 아닌 == 를 사용하는것, :를 사용하는것이 익숙치 않아 계속되는 오류에 고생을 많이 한거같다.
오류를 구글링하고, 계속 정보를 찾아가면서 다른사람들이 써놓은 코드를 보고, 따라 써보기를 시작으로 조금씩이지만 알아가는 재미를 조금은 알것 같기도..?
'python' 카테고리의 다른 글
[단순반복작업은 파이썬으로!] 엑셀 빅(?)데이터 간단 작업 (0) | 2021.11.22 |
---|---|
크롤링 완성(?) (0) | 2021.11.22 |
웹 스크랩핑(크롤링)_2 (0) | 2021.11.18 |
웹 스크랩핑(크롤링) (0) | 2021.11.18 |
Python - 기초개념2 (0) | 2021.11.18 |