Programming/Python

AI실무 기본과정 - 핵심 파이썬 기초 프로그래밍 step 2

skrr 2021. 12. 10. 15:47

 

3. 반복문

 

sum = 0
for i in [1, 2, 3]:
  sum = sum+i
  print(sum)


해당 for 문의 결과값은 1,3,6이 된다.
* for문과 if문 안의 실행문에는 꼭 동일한 들여쓰기가 들어가야 한다.(Python이 실행문인지 구분하는 규칙)

 

[1]원소 부분의 문자열
ex) *CodeEditor

length = 0
for x in 'abcdefg':
    length = length + 1
    print("x :",x)
print(length)


*Console
x : a
x : b
x : c
x : d
x : e
x : f
x : g
7
코드 실행이 완료되었습니다.

꼭 리스트 원소가 아니라 문자열이 들어가도 안의 알파벳을 꺼내오고

위의 방식으로 해당 문자열의 길이를 알 수 있다.

* for문은 언제 사용하는 것이 좋을까?
= 원소에 대한 반복이 필요할때 하면 유용하다. 원소에 대한 반복이라 함은 각각의 원소들을 참조하면서 원소끝까지 반복을 해야하는 것을 원소에 대한 반복이라고 한다.


[2] for문 if ~ elif 응용

ex) * CodeEditor

## 변수 mix에 있는 "쌀"과 "씰"의 개수를 세봅시다.
mix = "쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰"
count_ssal=0
count_ssil=0
for i in mix:
    if i == '쌀':
        count_ssal+=1
    elif i == '씰':
        count_ssil+=1
print(count_ssal)
print(count_ssil)


*Console
300
225
코드 실행이 완료되었습니다.

[3] 반복문2 for range문 예제
ex) *CodeEditor 정수를 담은 시퀀스가 필요한 경우 예제

for i in range(1,11):
    print(i)


*Console
1
2
3
4
5
6
7
8
9
10
숫자가 짧으니까 직접 리스트형식으로 뽑아내도 상관없는데 100~1000이면 유용하게 시퀀스 자료형을 만들수있다.

ex2) *CodeEditor 상단 코드 외의 응용

for i in range(5):
        print("I Love Python!")



*Console
I Love Python!
I Love Python!
I Love Python!
I Love Python!
I Love Python!
코드 실행이 완료되었습니다.


ex3) *CodeEditor

#for-range()를 이용해서 19단을 전부 출력해봅시다!
for i in range(1, 20):
        print("19 *", i, "=", 19*i)


*Console
너무 길어서 굳이 콘솔은 안뽑겠음

 

4.자료형 활용

 

[1] list.append, sort() 활용 - sort() function model = same

ex) *CodeEditor

my_list = []
my_list.append(5)
my_list.append(4)
my_list.append(2)
my_list.append(1)
print(my_list)
my_list.sort()
print(my_list)

 

*Console
[5, 4, 2, 1]
[2, 3, 4, 5]
코드 실행이 완료되었습니다.

 

[2] 시퀀스 자료형의 인덱싱/슬라이싱 예제(시퀀스 자료형의 정의는 상단 pdf자료 참조)

  1. 문자열 "Impossible"이 담긴 변수 my_str을 만들어봅시다.
  2. 리스트 ["Apple", "Banana", "Chamwae", "Durian"]이 차례대로 담긴 변수 my_list를 만들어봅시다.
  3. 리스트 my_list에서 인덱싱을 이용해 변수 var1에 "Chamwae"를 넣어봅시다.
  4. 문자열 my_str에서 슬라이싱을 이용해 변수 var2에 "possible"을 넣어봅시다.

 

ex) *CodeEditor

my_str = 'Impossible'
my_list = ['Apple', 'Banana', 'Chamwae', 'Durian']
var1 = my_list[2]
var2 = my_str[2:]

 

[3] 시퀀스 자료형의 길이와 멤버 조사 예제

ex) *CodeEditor

my_str = "Impossible"
my_list = ["Apple", "Banana", "Chamwae", "Durian"]
var1 = len(my_str)
var2 = "Egg" in my_list
print(var1, var2)

*Console

10 False

코드 실행이 완료되었습니다.

 

[4] Dictionary 자료형 (자바의 Json형태의 데이터 타입과 동일) 데이터 핸들링 예제

  1. 다음 대응관계가 담긴 Dictionary를 하나 만들고, 이를 변수 my_dict에 넣어봅시다.
    • “사과” → “apple”
    • “바나나” → “banana”
    • “당근” → “carrot”
  2. 사과를 영어로 뭐라고 할까요? my_dict에서 “사과”를 Key로 넣어 나온 Value를 변수 var1에 넣어봅시다.
  3. 당근은 싫어요! my_dict에서 당근-carrot을 제거해봅시다.
  4. 체리는 좋아요! my_dict에서 체리-cherry를 추가해봅시다.

ex) *CodeEditor

my_dict = {"사과":"apple", "바나나":"banana", "당근":"carrot"}

var1 = my_dict["사과"]
del my_dict["당근"]
my_dict["체리"] = "cherry"

 

[5] Dictionary 자료형의 키값 예제

ex) *CodeEditor

my_dict = {}

my_dict[1] = "Integer"
my_dict['a'] = "String"
my_dict[(1, 2, 3)] = "Tuple"
try:
    #여기에 [1, 2, 3] → "List"의 대응관계를 만들어봅시다.
    my_dict[[1, 2, 3]] = "List"
    
except TypeError:
    print("List는 Dictionary의 Key가 될 수 없습니다.")

 

*Console

List는 Dictionary의 Key가 될 수 없습니다.
코드 실행이 완료되었습니다.
리스트는 앞서 리스트 자료형의 응용에서 삽입, 수정, 삭제가 자유롭게 .append 느낌으로다가 수정을 할 수있어서
변하는 성질을 가진 자료형은 Dictionary자료형의 키값에 적용될 수 없다.