# 파이썬 제어문



제어문이란 프로그래밍 언어에서 실행순서를 변경시키거나 또는 조건에 따라 실행해야 할 명령문을 제어하는데에 사용되는 구문입니다. 일반적으로 프로그램은 위에서 아래로 순차적으로 실행되지만, 어떤 조건에 대해서만 실행해야 하는 경우나 특정 부분을 반복하여 실행해야 하는 경우 등이 있습니다.

python에서는 if, for, while문을 사용하여 흐름을 제어할 수 있습니다.



1. while 문


특정작업을 반복하여 실행해야 할 경우 반복문을 사용하면 간단히 해결할 수 있습니다. while문은 반복문의 일종으로 조건문이 참일 경우 반복을 계속합니다. 


1
2
3
while 조건:
    수행할 작업
    ...
cs


while이라는 키워드를 먼저 적고 그 뒤에 조건을 적어주면 됩니다. 앞선  if문 강의에서 배웠던 비교, 논리연산자가 쓰일 수 있습니다.


2. while 문 사용예제


glass라는 변수의 값을 0으로 초기화 하고 while문의 조건으로 glass가 10보다 작을 경우를 설정합니다. 이렇게 하면 while문의 조건이 참이니 동작을 시작하겠죠? 하지만 glass 의 값을 while문 안에서 늘려주지 않는다면 while은 무한히 실행될 것입니다. 고로 glass의 값을 +=을 통해 1씩 늘려주기로 하겠습니다. 또 while 문안에 print문을 넣어 한잔 마셨습니다. 를 출력해 보도록 하겠습니다. 그리고 glass의 값이 10이 되었을 때 취했으니 집에 돌아가요. 라는 문구를 출력해보도록 하겠습니다.



1
2
3
4
5
6
7
8
glass = 0
#10번 반복
while glass < 10:
    glass+=1
    print("한잔 마셨습니다.")
    if glass == 10:
        print("취했으니 집에 돌아가요.")
    
cs




3. while문 이스케이프(escape)


while문은 조건문이 참인 동안 계속해서 하위 구문을 반복적으로 실행합니다. 하지만 중간에 while문을 빠져나가고 싶을 경우에는 break문을 넣어 즉시 while문을 빠져나갈 수 있습니다.


1
2
3
4
5
6
7
8
9
number = 77
counter = 2
while counter < number:
    if number%counter == 0:
        print("소수가 아닙니다.")
        break
    counter += 1
    if counter == number
        print("소수 입니다.")
cs


'Dev > python' 카테고리의 다른 글

[python] 제어문(if, for, while) - 3  (0) 2019.03.23
[python] 시퀀스 자료형과 이터러블  (1) 2019.03.23
[python] 제어문(if, for, while) - 1  (0) 2019.02.15
[python] 튜플과 Immutable  (0) 2019.02.14
[python] 딕셔너리(dictionary)  (0) 2019.02.13

# 파이썬 딕셔너리



딕셔너리란 대응되는 데이터를 Key:Value 형식으로 저장할 수 있는 자료구조입니다. 타 언어에서는 연관배열이나 해시맵이라고 하죠?


딕셔너리는 리스트처럼 순차적으로 요소에 접근하는 시퀀스 자료형이 아닙니다. 반드시 Key를 통하여 Value값을 얻습니다. 예를 들어 language라는 KeyPython이라는 Value가 저장되어있을 경우 language를 통해 Python이라는 값을 얻을 수 있습니다.



1. 딕셔너리 선언


딕셔너리의 각 요소는 Key:Value 형태로 이루어져 있고 쉼표(",")로 데이터를 구분 짓습니다. 그리고 Key와 Value가 같은 자료형일 필요는 없습니다. Key가 문자열이고 Value가 숫자나 리스트나 딕셔너리여도 상관이 전혀 없습니다.

하지만 만약 중복되는 키를 입력시에는 데이터가 무시 되기 때문에 필수적으로 중복검사를 실시해야 합니다.


1
2
3
dic ={} # 빈 딕셔너리 선언
dic = dict() # 빈 딕셔너리 선언
dic = {"Key":"Value","number":1234#여러데이터 저장 가능
cs



2. 딕셔너리 값 추가 및 수정


딕셔너리의 값을 수정하기 위해서는 먼저 요소에 키를 통하여 접근할 필요가 있습니다. 만약 수정하려는 값의 key가 2일 경우에는 2로 접근하시면 됩니다.

값을 추가하고 싶은 경우에도 마찬가지입니다. 딕셔너리 이름이 dic일 경우에 dic["newKey"] 처럼 새로운 키를 설정해주고 값을 대입하면 됩니다. newKey라는 키는 제가 임의로 만든것이며 어떤 값이여도 상관없습니다. 


1
2
3
4
5
6
dic = {1:"a"}
dic[2= "b"
# dic == {1:"a",2:"b"}
 
dic[2= "c"
# dic == {1:"a",2:"c"}
cs



3. 딕셔너리 데이터 접근


리스트에서는 요소 값에 접근하기 위하여 인덱싱을 사용하였지만 딕셔너리는 인덱싱이아니라 Key이름을 기반으로 데이터에 접근합니다.


1
2
3
dic = {"apple":500,"banana":1000}
#dic["apple"] == 500
#dic["banana"] == 1000
cs



# 딕셔너리 내장함수



1. keys


딕셔너리 모든 Key를 객체로 리턴합니다. key만을 추출할 때 사용합니다.


1
2
3
4
dic = {"apple":500"banana":1000}
dic.keys()
 
#dict_keys(['apple', 'banana'])
cs



2. values


딕셔너리 모든 Value를 객체로 리턴합니다. Value만을 추출할 때 사용합니다.


1
2
3
4
dic = {"apple":500"banana":1000}
dic.values()
 
# dict_values([500, 1000])
cs


3. items


items 함수는 딕셔너리의 모든 데이터를 객체로 리턴합니다.


1
2
3
4
dic = {"apple":500"banana":1000}
dic.items()
 
# dict_items([('apple', 500), ('banana', 1000)])
cs


4. get


get함수는 키를 알고 있을 데 value를 추출할 때 사용합니다.


1
2
3
4
dic = {"apple":500"banana":1000}
dic.get("apple")
 
# 500
cs



'Dev > python' 카테고리의 다른 글

[python] 제어문(if, for, while) - 1  (0) 2019.02.15
[python] 튜플과 Immutable  (0) 2019.02.14
[python] 리스트 함수  (0) 2019.02.11
[python] 리스트와 Shallow Copy  (0) 2019.02.10
[python] 문자열 함수  (0) 2019.02.09

# 파이썬 기본자료형



먼저 Python의 자료형에 관하여 알아보겠습니다. 자료형이란 프로그래밍시 사용되는 모든 자료 형태입니다. Python에는 기본적으로 숫자, 문자열, 리스트, 딕셔너리, 튜플, Bool 그리고 Set의 자료형이 존재하는데요, 타언어에서는 변수를 선언할 때 int num, String alpha 등 처럼 자료형을 명시해줘야함과 다르게 Python은 변수 선언시 자료형을 명시하지 않아도 되는 특징을 갖고 있습니다. 


a = 123

b = "Hello Python"


즉, 위와 같이 입력해도 python은 찰떡같이 알아먹습니다. qutation("")으로 감싸여진 것은 str, 일반 숫자로 쓰여 있는것은 int형으로 인식합니다. 변수를 선언함과 동시에 자료형을 입력해주지 않아도 되는 편리함 때문에 문법이 더욱 간결해집니다.


하지만 이것은 무조건 좋은 것만은 아닙니다. 요즘 3.7버전의 python에서는 type hint 라는것이 등장했는데요 함수의 인자 값으로 들어갈 형을 지정해 주는 것입니다. 기존의 python은 함수의 인자에 자료형을 명시해 주지않아 가독성이 떨어지는 경향이 있었습니다. 이는 사용자의 불편함을 초래하였고 이를 해결하려는 노력이 지속되고 있습니다.


그렇기 때문에 변수를 선언할 때에는 변수 이름만 봐도 어떤 것인지 알게끔하는 능력이 정말 중요합니다.




# 숫자


Python에서 숫자란 1, 2, 3, -3 과 같이 정수와, 1.45, 0.11과 같이 실수로 표현되는 수를 의미합니다. 추가적으로 기수 체계가 다른 16진수, 8진수, 2진수도 인식합니다.


 자료형

 선언방법

 정수형

 num = 123

 실수형

 num = 1.45

 16진수

 num = 0x0d

 8진수

 num = 0o07

 2진수

 num = 0b1010


먼저 정수, 16진수, 8진수, 2진수 형태로 변수를 선언하면 python내에서 해당 변수의 자료형을 int로 인식합니다. 즉 0x0d를 입력한다고 해서 0x0d가 저장되는 것이 아니라, 0x0d의 10진수값인 13이 변수에 저장되는 것이죠.


하지만 실수형으로 변수를 선언하였다면 해당 변수의 자료형은 float형이 됩니다. 한 번 확인해 볼까요?



1
2
3
4
5
6
7
8
9
10
11
12
13
14
num = 123
print(type(num))
 
num = 1.45
print(type(num))
 
num = 0x0d
print(type(num))
 
num = 0o07
print(type(num))
 
num = 0b1010
print(type(num))
cs


type()함수는 해당 변수의 자료형을 확인하는 내장함수입니다.



해당 코드를 실행한 결과값 입니다. 제가 말한 대로 실수형을 제외한 모든것은 int형으로 저장이 되었죠?




# 연산자


컴퓨터는 성능좋은 계산기입니다. 그렇다면 당연히 우리는 컴퓨터로부터 수학적인 계산능력을 끌어와 이용해야 할 것입니다. 다른 언어를 배우고 오신 분들이라면 다른언어에는 연산자라는게 있다는 것을 이미 알고 계실 겁니다. 당연히 Python도 타 언어와 동일하게 계산 연산자가 존재합니다. 사칙연산뿐만아니라, 제곱연산자 등 편리한 연산자들이 있습니다.


 연산자

설명

 +

더하기 연산자 

 -

 빼기 연산자

 *

 곱하기 연산자

 /

 나누기 연산자(소수점 반환, 자동 형변환, 3버전기준)

 **

 제곱 연산자

 //

 나눗셈 후 몫 반환

 %

 나눗셈 후 나머지 반환


그렇다면 이번에는 위의 연산자를 이용하여 실제로 변수의 값들을 연산해 보도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
num1 = 10
num2 = 4
 
print(num1+num2)
print(num1-num2)
print(num1*num2)
print(num1/num2)
print(num1**num2)
print(num1//num2)
print(num1%num2)
 
cs



결과 값입니다. 제대로 값이 나오는 것을 확인 할 수 있죠? 그런데 말입니다 정수끼리 나눗셈을 했을때 실수가 나오는 것에대해서 어떤 생각이 드시나요? C언어에서는 정수끼리의 연산을 진행해서 실수가 나오게 하려면 강제 형변환(type casting)을 진행해줘야 했는데요 python은 자동으로 형을 변환해 줍니다. 한번 확인해 볼까요?


1
2
3
4
5
num1 = 10
num2 = 4
 
print(type(num1/num2))
 
cs



결과 값입니다. float형으로 변환되었죠? 이와 같이 파이썬에서는 나눗셈을 시도할 때 강제적인 형변환이 따로 필요하지 않습니다. 정말 간단하지 않나요?





'Dev > python' 카테고리의 다른 글

[python] 리스트 함수  (0) 2019.02.11
[python] 리스트와 Shallow Copy  (0) 2019.02.10
[python] 문자열 함수  (0) 2019.02.09
[python] 문자열  (0) 2019.02.07
[python] 파이썬 설치하기  (0) 2019.02.07

+ Recent posts