줴림이 공부하줴림
[SWEA] [파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법] 7. 흐름 제어 - 반복 본문
어제 처음으로 티스토리에 글을 썼는데, 거기에 삘 받아서 티스토리 꾸민다~ 블로그 꾸민다~ 난리를 치다가 시간만 죽이고 그냥 침대로 들어가버린 나... 오늘부턴 절대 그럴 일이 없도록 다시 기초부터 한 번에 싹 끝낸다!
그래야 백준 문제 뭘 풀든가 말든가 하지...
1. 다음의 결과와 같이 5명의 학생의 점수에 대해 60 이상일 때 합격 메시지를 출력하고, 60미만일 때 불합격 메시지를 출력하는 프로그램을 만드십시오.
score = [88, 30, 61, 55, 95]
for i in range(len(score)):
if (score[i] >= 60):
print("%d번 학생은 %d점으로 합격입니다." % (i+1, score[i]))
else:
print("%d번 학생은 %d점으로 불합격입니다." % (i+1, score[i]))
이 문제는 입력값이 없길래 그러면 어떻게 해야하는거지? 하고 고민 좀 했다. 알고보니 내가 점수를 일일이 넣어야하는 것일줄은...
2. 1부터 100까지의 숫자를 for 문과 range 함수를 이용해 출력하십시오.
for i in range(1, 101):
print(i)
3. 1부터 100까지의 숫자 중 짝수를 for 문을 이용해 다음과 같이 출력하십시오.
ans = ''
for i in range(2, 101, 2):
ans += str(i) + ' '
print(ans)
4. 1부터 100까지의 숫자 중 홀수를 for 문을 이용해 다음과 같이 출력하십시오.
ans = ''
for i in range(1, 101, 2):
ans += str(i) + ', '
print(ans[:-2])
5. 1부터 100까지의 숫자 중 3의 배수의 총합을 for문을 이용해 출력하십시오.
total = 0
for i in range(1, 101):
if (i % 3) == 0:
total += i
print("1부터 100사이의 숫자 중 3의 배수의 총합: %d" % (total))
6. 다음은 10명의 학생들의 혈액형 데이터입니다. for문을 이용하여 각 혈액형 별 학생수를 구하십시오.
blood = ['A', 'A', 'A', 'O', 'B', 'B', 'O', 'AB', 'AB', 'O']
count = {'A': 0, 'O': 0, 'B': 0, 'AB': 0}
for i in blood:
if i == 'A':
count['A'] += 1
elif i == 'B':
count['B'] += 1
elif i == 'O':
count['O'] += 1
else:
count['AB'] += 1
print(count)
딕셔너리 쓰는 법도 좀 익숙해져야 할 듯 싶다.
7. 다음은 학생의 점수를 나타내는 리스트입니다. while 문과 리스트 객체의 pop()을 이용해 80점 이상의 점수들의 총합을 구하시오.
student = [85, 65, 77, 83, 75, 22, 98, 88, 38, 100]
total = 0
while student:
score = student.pop()
if score >= 80:
total += score
print(total)
8. while문을 이용해 아래와 같이 별을 표시하는 프로그램을 만드십시오.
i = 0
while (i < 6):
print("*" * (5-i))
i += 1
처음에 이렇게 작성하고 test 돌렸는데 잘 나와서 그냥 제출했더니 fail이 떴다. i=0으로 시작하면 안되는 거였을까?
i = 5
while (i > 0):
print("*" * (i))
i -= 1
이렇게 바꾸니까 바로 pass가 나왔다. 뭐가 다른가?
9. while문을 이용해 아래와 같이 별을 표시하는 프로그램을 만드십시오. (근데 이번에는 가운데 정렬)
i = 0 # 띄어쓰기 개수
t = 7 # 전체 별 개수
while (t > 0):
print(" " * i + "*" * t + " " * i)
i += 1
t -= 2
이 문제.. 옛날에 1학년 때 컴프 들을 때도 했었는데 애먹었던 기억이 있다. 그 때는 C언어로 했지만 지금은 python이라는 게 차이점이라면 차이점일지도.
10. 다음과 같이 어떤 한 양의 정수를 입력하여 그 숫자에 0~9가 몇 번 사용되었는지 표시하십시오.
num = list(map(int, input()))
count = [0] * 10
for i in num:
count[i] += 1
print("0 1 2 3 4 5 6 7 8 9")
print(*count)
이번 문제는 살짝 애먹었다. 역시나 인터넷 님의 도움을 받았는데... 입력을 받아서 map을 이용해서 한 자리 한 자리 끊어내는 건 좀 외워야 하나 싶다. 전에도 본 거 같은데 영 생각이 안 나네..
그리고 신박했던 거, 리스트 앞에 * 붙이면 그냥 0 1 2 3 4 5 ... 이런 식으로 출력된다. 되게 유용할 듯? 메모메모
11. for문을 이용해 별을 표시하는 프로그램을 만드십시오.
for i in range(1, 6):
print(' ' * (5-i) + '*' * i)
죽지 않고 돌아온 별 출력 문제
12. 다음과 같이 10진수를 2진수로 변환하는 프로그램을 만드십시오.
네?? 잠깐 일단 10진수를 2진수로 변환하는 원리에 대해 생각해보자.
예를 들어 11이 있다. 그럼 11을 2로 나누고 나머지가 0인지 1인지 본다. 이 나머지가 2진수 맨 오른쪽 자리 숫자다. 그리고 몫이 0이 될 때까지 계~~속 나눠주면 되는데... 이걸 어떻게 구현하지?
num = int(input())
binary_num = ''
while (num > 0):
binary_num += str(num % 2) + binary_num
num = num // 2
print(binary_num)
이렇게 작성했더니, 8 넣었을 때 결과가 '000000010000000' 이딴 식으로 나온다. 어디가 문젤까....
찾았다. binary_num += str(num % 2) ~가 아니라 binary_num = str(num % 2) ~로 했어야 했다. 그러니까 이상한 값이 나오지.
num = int(input())
binary_num = ''
while (num > 0):
binary_num = str(num % 2) + binary_num
num = num // 2
print(binary_num)
반복문 연습문제 끝!! 이어서 함수 기초 문제 풀어야지. 그 전에 홍차 한 잔 마시고...
'Study > SWEA' 카테고리의 다른 글
[SWEA] [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 5. 객체지향 (1) | 2025.04.03 |
---|---|
[SWEA] [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 4. 문자열 (0) | 2025.04.02 |
[SWEA] [파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법] 9. 내장 함수 (0) | 2025.04.02 |
[SWEA] [파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법] 8. 함수 기초 (0) | 2025.04.02 |
[SWEA] [파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법] 6. 흐름제어 연습문제 (0) | 2025.04.02 |