이번 시간에는 파이썬 반복문에 대해 작성해 보겠습니다.
먼저 반복문에는 while문과 for문이 있는데
보통 반복횟수가 명확하지 않을때는 while문을 쓰고
명확할때는 for문을 씁니다
반복문(while, for)
- 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문
1. while문
- 반복 횟수가 명확하지 않을때
while 조건식: 수행문장 수행문장
먼저 while문은 조건식쓰고 들여쓰기를 한뒤 수행문장을 적으면됩니다
java랑 다르게 코드블럭이 없어서 더 간단한거같습니다
number = 1
while number <=13:
print("파이썬 최고!!")
number += 1
이런식으로 작성하면 while문이 실행될때마다 number는 1씩 증가하고 13번 실행되면 멈추게됩니다
또 다른 방법으로는 break를 쓰는것인데
number = 1
while True:
print("파이썬 최고!!",number)
number += 1
if number > 13:
break
while 조건식에 True를 적으면 무한루프에 빠지지만 break를 작성해줌으로써 탈출하는겁니다!
2. for문
- 반복 횟수가 명확할때 활용
- 인덱스를 지정해서 반복하는 방법
- foreach 스타일로 리스트, 튜플 등 아이템의 갯수에 따라 반복하는 방법
for문은 while문과 다르게 반복횟수가 명확할때 사용합니다.
## 1. 인덱스 지정하는 방법
## range함수 사용
## range(시작값, 끝값, 증가값)
for i in range(1,10,1):
print(i , end=' ')
이렇게 시작값과 끝값을 정해서 사용할수도있고
## 2. foreach 반복문
## 주로 아이템이 들어있는 리스트, 튜플, 딕셔너리 등을 반복하고 싶을때 사용
word_list = ["apple", "banana", "orange"]
for w in word_list:
print(w, end=' ')
for each형태로 아이템을 가져올때도 사용할수있습니다
아이템이 2개씩 묶인 튜플을
for each로 가져와보겠습니다
student_score = (('hhd', 90),('pbk', 88), ('jh',50))
for student in student_score:
print(student)
('hhd', 90)
('pbk', 88)
('jh', 50)
실행하면 이렇게 나오게됩니다
또 다른 방법이 존재하는데
for name,score in student_score:
print("name : ", name)
print("score : ", score)
아이템이 두개라서 변수도 두개를 선언해주면
각각의 값이 순차적으로 변수에 담기게됩니다.
그리고 반복문을 실행할때 인덱스 번호를 가지고 오는 함수도 존재합니다
enumerate 라는 함수인데
item_list = ['A', 'B', 'C', 'D', 'E']
for index, item in enumerate(item_list): # enumerate -> item과 index를 같이 꺼내주는 함수
print(index, "번째", item)
index라는 변수에는 인덱스의 값이 담기고 item에는 리스트에 들어있는 변수가 순차적으로 담길것입니다.
0 번째 A
1 번째 B
2 번째 C
3 번째 D
4 번째 E
리스트에서 인덱스 번호를 알고싶거나
해당 인덱스의 값만 출력하고 싶을때 사용하면 좋습니다
리스트에서 가장 작은값을 찾는 반복문입니다
list2 = [4,5,2,1,99,15,2,7,27]
min_2 = list2[0]
for a in list2:
if min_2 > a:
min_2 = a
print("가장 작은 수 :",min_2)
처음 작성할때 어려움을 느끼는것은 최솟값을 지정해주는 부분인거 같습니다
임의로 지정을 해줘야하는데 변수선언을 for문 안에서한다거나
갈피를 못잡은 Java를 배울때 기억납니다
임의로 리스트의 0번째값을 최솟값으로 더 작으면 변경되는 코드입니다
리스트에 더 작은 수를 추가해도 가장 작은수가 나옵니다!
딕셔너리
- 데이터를 쌍으로 저장하는 자료구조
- key와 value로 묶어서 저장한다
- key값으로 데이터를 탐색하기 때문에 데이터 접근 속도가 빠르다.
- 단, 순서가 존재하지 않는다는 특징이 있다.
딕셔너리 생성하는 방법은 중괄호에 넣어줍니다
Key와 Value로 묶기때문에
{Key1: Value1, Key2: Value2, Key3: Value3, ...}
이런식으로 작성하면됩니다
a = {} # 빈 딕셔너리
b = {"name" : "hd"} #문자열을 이용한 딕셔너리
c = { 1:2, 3:4} #숫자를 이용한 딕셔너리
song이라는 딕셔너리를 만들어보겠습니다
song ={"노래제목" : "Love wins all",
"가수" : "아이유",
"앨범유형" : "싱글/EP",
"장르" : "가요/발라드"}
# key값들만 거낼때
song.keys()
# value값만 거낼때
song.values()
print(song["장르"])
값을 가져오는 방법입니다
print문을 안쓰면
dict_keys(['노래제목', '가수', '앨범유형', '장르'])
score_dict = {'이름': ['손지영', '김은영', '김운비', '채수민', '최성우'],
'Python' : [90,100,85,90,80],
'Java' : [85,80,100,95,85],
'html/css' : [75,70,90,80,90]
}
위와 같은 딕셔너리가 있습니다 value값에는 리스트형으로 담긴걸 볼수있습니다
이름을 입력받아 과목의 점수와 평균값을 구하는것입니다!
처음에 저의 접근방식은 반복문으로 특정 인덱스의 값만 출력되게 하려고 했는데
이름을 입력했을때 그 이름의 인덱스를 가져오는 방법을 몰랐습니다
index함수를 알게됐고 이름을 입력받아서 그 이름의 인덱스를 i에 담아주고
반복문을 통해서 해당 과목의 인덱스번호에있는 점수를 출력하게만들었고
마지막으로 avg라는 변수에 점수를 더하고 3으로 나눈 값을 담았습니다
avg = 0
i = 0
name = input("이름을 정확하게 기입하세요 >> ")
for get_name, get_score in score_dict.items():
if name in score_dict['이름']:
i = score_dict['이름'].index(name) #index 함수
print(get_score[index_1])
avg = (score_dict['Python'][i] + score_dict['Java'][i] + score_dict['html/css'][i]) /3
# print(avg)
print(f"평균{round(avg,2)} ") # round 함수
선생님은 for문 없이 문제를 푸셨는데
풀이는 다양할거같습니다
사실 파이썬은 문법, 알고리즘보다는 라이브러리를 활용한 크롤링이나 데이터 분석을 더 집중적으로 배울예정이라
알고리즘 부분은 스스로 계속 공부해야할거같습니다..
다음시간엔 자주쓰이는 파이썬 라이브러리에 대해 작성해보겠습니다
'Python' 카테고리의 다른 글
파이썬 조건문, 리스트, 튜플 (1) | 2024.02.07 |
---|---|
파이썬 숫자형, 문자열 (1) | 2024.02.06 |