안녕하세요!
python 제어문 - 반복문 간단 정리! 본문
전전 시간에 리스트를 다뤘었는데, 그때 https://pythontutor.com/ 이런 홈페이지를 알려주셨다.
해당 필요한곳에 들어가면




이런식으로 어떻게 작동하는지를 보여준다.
위의 두 gif는, 메모리에서 작동하는 방식이 어떻게 다른지를 보여준다.
(a에게 직접 값을 준것과, a에게 리스트로 저장하여 메모리의 어느공간을 할당해서 주소로 저장한것의 차이.)
알아두면 좋은 지식이니... 그냥 넘어가도록 하자.
반복문 - while
- 조건이 '참'일동안 무한히 반복한다.
예제를 보자면,
jjambbong = 0
while jjambbong < 10:
jjambbong += 1
print(f'짬뽕을 {jjambbong}그릇 먹었다.')
if jjambbong == 10:
print('무료 쿠폰 지급 됐습니다.')
짬뽕을 1그릇 먹었다.
짬뽕을 2그릇 먹었다.
짬뽕을 3그릇 먹었다.
짬뽕을 4그릇 먹었다.
짬뽕을 5그릇 먹었다.
짬뽕을 6그릇 먹었다.
짬뽕을 7그릇 먹었다.
짬뽕을 8그릇 먹었다.
짬뽕을 9그릇 먹었다.
짬뽕을 10그릇 먹었다.
무료 쿠폰 지급 됐습니다.
이런식으로 짬뽕을 10그릇먹고 무료쿠폰을 지급받을 수 있는 식을 짤 수 있다.
여기서는 10번에 멈췄지만 진짜 무한하게 반복되는 식을 만들때는 while True를 사용한다.(break가 없다면..)
jjambbong = 0
while True:
jjambbong += 1
print(f'짬뽕을 {jjambbong}그릇 먹었다.')
if jjambbong == 10:
print('어머니가 그만먹자고 하셨다')
break
짬뽕을 1그릇 먹었다.
짬뽕을 2그릇 먹었다.
짬뽕을 3그릇 먹었다.
짬뽕을 4그릇 먹었다.
짬뽕을 5그릇 먹었다.
짬뽕을 6그릇 먹었다.
짬뽕을 7그릇 먹었다.
짬뽕을 8그릇 먹었다.
짬뽕을 9그릇 먹었다.
짬뽕을 10그릇 먹었다.
어머니가 그만먹자고 하셨다
그렇다 짬뽕만 먹다보니 어머니가 그만먹자고 하시는 일이 발생할 수 있다.
a = 0
while a < 10:
a += 1
if a % 2 == 0:
continue
print(a)
1
3
5
7
9
이런식으로 continue를 사용하여 홀수만 출력 할 수도 있고
continue : if문을 만족 할 시 다시 while문으로 돌린다.
a = 0
while a < 10:
a += 1
if a % 2 == 0:
pass
print(a)
1
2
...
9
10
pass를 사용하면 조건을 무시할 수도 있다.
문제 :
콘테스트 평가
- 7명의 심판들의 점수를 입력받아 리스트에 저장하고 최소값과 최대값을 리스트에서 제거하는 프로그램을 작성해보자.
제거전 [10.0, 9.0, 8.3, 7.1, 3.0, 9.0]
제거후 [9.0, 8.3, 7.1, 9.0]
7명의 스코어를 input으로 받는다.
받은 스코어중에 제일 높은점수를 제외한다.
받은 스코어중에 제일 낮은점수를 제외한다.
받은 스코어를 리스트에 담는다.
출력한다.
max min을 사용할건지, score끼리 비교할건지.
이런 아이디어를 갖고 시작했다.
score0 = float(input())
score1 = float(input())
score2 = float(input())
score3 = float(input())
score4 = float(input())
score5 = float(input())
score6 = float(input())
scorelist = [score1, score2, score3, score4, score5, score6, score0]
scorelist.remove(max(scorelist))
scorelist.remove(min(scorelist))
print(scorelist)
1
2
3
4
5
6
7
[2.0, 3.0, 4.0, 5.0, 6.0]
이렇게 우선 만들었고, 이후 while True를 이용해보기로 했다.
score = 0
scorelist = []
while True:
score += 1
i = input("점수를 1점부터 10점으로 입력해주세요 : ")
scorelist.append(float(i))
if score > 6:
print("점수 입력이 완료됐습니다.")
break
scorelist.remove(max(scorelist))
scorelist.remove(min(scorelist))
print('점수 결과는 :', scorelist)
점수를 1점부터 10점으로 입력해주세요 : 7
점수를 1점부터 10점으로 입력해주세요 : 9
점수를 1점부터 10점으로 입력해주세요 : 4
점수를 1점부터 10점으로 입력해주세요 : 1
점수를 1점부터 10점으로 입력해주세요 : 2
점수를 1점부터 10점으로 입력해주세요 : 3
점수를 1점부터 10점으로 입력해주세요 : 5
점수 입력이 완료됐습니다.
점수 결과는 : [7.0, 4.0, 2.0, 3.0, 5.0]
while True로 쓰려다가 들여쓰기를 잘못맞춰서 왜 안되는지 꽤나 오랜시간 고생했다... (여러분은 꼭 맞춰쓰세요)
현재 예외를 잡으려고 하고있는데... 생각처럼 잘 되지 않아서... 고생중이다.
해결하게된다면 이 글 뒷쪽으로 또는 다음 글로라도 올리도록 하겠다.
2023.11.05. 23:45
score = 0
scorelist = []
while True:
score += 1
i = input("점수를 1점부터 10점으로 입력해주세요 : ")
if float(i) > 10:
print('점수를 다시 입력해주세요.')
score -= 1
continue
scorelist.append(float(i))
if score > 6:
print("점수 입력이 완료됐습니다.")
print(scorelist, type(scorelist))
break
scorelist.remove(max(scorelist))
scorelist.remove(min(scorelist))
print('점수 결과는 :', scorelist)
23.11.06 10:14 평균 값 추가 및 포매팅.
score = 0
scorelist = []
scosum = 0
while True:
score += 1
i = input(f"{score}번째 심사위원의 점수를 입력해주세요 : ")
if float(i) > 100:
print('점수를 다시 입력해주세요.')
score -= 1
continue
scorelist.append(float(i))
scosum += float(i)
if score > 6:
print("점수 입력이 완료됐습니다.")
print(scorelist, type(scorelist))
break
scorelist.remove(max(scorelist))
scorelist.remove(min(scorelist))
avg = scosum / len(scorelist)-2
print(f'점수 결과는 {scorelist}입니다.')
print(f'점수평균은 {avg}점 입니다.')
'개발일지 > python' 카테고리의 다른 글
페어 프로그래밍(고객관리프로그램) python (0) | 2023.11.07 |
---|---|
python 제어문 - for , list 안의 for문 (0) | 2023.11.06 |
Python set(집합), boolean(불리언) (0) | 2023.11.05 |
Python (list, tuple, dictionary) 간단 정리! (0) | 2023.11.03 |
Python(변수, 숫자, 문자열)을 알아보자! (2) | 2023.11.02 |