반복문-1단계_구구단
단계 | 제목 | 설명 | |
---|---|---|---|
3 | 반복문 | for, while 등의 반복문을 사용해 봅시다. | |
소단계 | 문제번호 | 제목 | |
1 | 2739 | 구구단 | |
구구단을 출력하는 문제 |
문제
N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
입력
첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.
출력
출력형식과 같게 N1부터 N9까지 출력한다.
내 제출
A = int(input())
for i in range(1,9):
print('2 * i =','2*i','\n')
결과
오답: 틀렸습니다.
수정 제출
A = int(input())
for i in range(1,10):
print(A ,'*', i, '=',A*i)
결과
정답
오답 이유
이번문제의 오답 역시 문법적오류는 없습니다.
주요한 오답 파트로는 두가지가 있습니다.
1. 숫자값 출력, 문자열 출력
for i in range(1,9):
print('2 * i =','2*i','\n')
우선 A 로 숫자를 입력 받고 그에 해당하는 구구단을 출력하는 문제이지만, 해당 출력 for 문에서는 2단으로 정해두는 알고리즘임을 알 수 있습니다.
이를 A 단으로 바꾸어주고, 입력된 숫자값을 그대로 출력해주기 위해선 해당 A 에는 ‘ ‘ 를 붙이지 않습니다.
for i in range(1,9):
또한 for 문의 range 의 경우는 1이상 9 미만입니다.
이를 9까지 적용시켜주기 위해서는 (1,10) 으로 수정해줍니다.
2.해결원리
이를
for i in range(1,10):
print(A ,'*', i, '=',A*i)
와 같이 올바른 원리 적용으로 수정하였습니다.
사용된 코드 이론
for문의 기본 구조
for문의 기본 구조는 다음과 같다.
for 변수 in 리스트(또는 튜플, 문자열):
수행할 문장1
수행할 문장2
...
리스트나 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 “수행할 문장1”, “수행할 문장2” 등이 수행된다.
예제를 통해 for문 이해하기
for문은 예제를 통해서 살펴보는 것이 가장 알기 쉽다. 다음 예제를 직접 입력해 보자.
1. 전형적인 for문
>>> test_list = ['one', 'two', 'three']
>>> for i in test_list:
... print(i)
...
one
two
three
['one', 'two', 'three']
리스트의 첫 번째 요소인 ‘one’이 먼저 i 변수에 대입된 후 print(i)
문장을 수행한다. 다음에 두 번째 요소 ‘two’가 i 변수에 대입된 후 print(i)
문장을 수행하고 리스트의 마지막 요소까지 이것을 반복한다.
2. 다양한 for문의 사용
>>> a = [(1,2), (3,4), (5,6)]
>>> for (first, last) in a:
... print(first + last)
...
3
7
11
위 예는 a 리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 (first, last) 변수에 대입된다.
for문과 함께 자주 사용하는 range 함수
for문은 숫자 리스트를 자동으로 만들어 주는 range 함수와 함께 사용하는 경우가 많다. 다음은 range 함수의 간단한 사용법이다.
>>> a = range(10)
>>> a
range(0, 10)
range(10)은 0부터 10 미만의 숫자를 포함하는 range 객체를 만들어 준다.
시작 숫자와 끝 숫자를 지정하려면 range(시작 숫자, 끝 숫자) 형태를 사용하는데, 이때 끝 숫자는 포함되지 않는다.
>>> a = range(1, 11)
>>> a
range(1, 11)
range 함수의 예시 살펴보기
for와 range 함수를 사용하면 1부터 10까지 더하는 것을 다음과 같이 쉽게 구현할 수 있다.
>>> add = 0
>>> for i in range(1, 11):
... add = add + i
...
>>> print(add)
55
range(1, 11)
은 숫자 1부터 10까지(1 이상 11 미만)의 숫자를 데이터로 갖는 객체이다. 따라서 위 예에서 i 변수에 숫자가 1부터 10까지 하나씩 차례로 대입되면서 add = add + i
문장을 반복적으로 수행하고 add는 최종적으로 55가 된다.
또한 우리가 앞에서 살펴본 “60점 이상이면 합격”이라는 문장을 출력하는 예제도 range 함수를 사용해서 다음과 같이 바꿀 수 있다.
# marks3.py
marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):
if marks[number] < 60:
continue
print("%d번 학생 축하합니다. 합격입니다." % (number+1))
len 함수는 리스트 안의 요소 개수를 돌려주는 함수이다. 따라서 len(marks)
는 5가 될 것이고 range(len(marks))
는 range(5)
가 될 것이다. number 변수에는 차례로 0부터 4까지의 숫자가 대입될 것이고, marks[number]
는 차례대로 90, 25, 67, 45, 80 값을 갖게 된다. 결과는 marks2.py 예제와 동일하다.