안녕하세요. Harry입니다.
현재 풀이중인 초보자를 위한 파이썬 300제 풀이를 진행하면서 나름대로 파악했던 문제 출제 의도와 풀이를 작성했습니다.
모든 풀이는 직접 Pycharm을 통해 에러없이 출력됨을 확인 후 작성했습니다.
초보자를 위한 파이썬 300제 풀이는 Wikidocs에 무료로 배포된 전자책을 활용했습니다/
[학습목표]
1. 각 문제별 요구하는 역량(출제의도)이 무엇인지 파악할 수 있다.
2. 각 문제별 요구하는 기술 및 기능을 활용하여 문제를 해결할 수 있다.
161 ~ 170
161
for문과 range 구문을 사용해서 0~99까지 한 라인에 하나씩 순차적으로 출력하는 프로그램을 작성하라.
- 요구역량 : for문과 range메서드의 특징을 알고 활용할 수 있는가?
정답확인
for i in range(0,100):
print(i)
162
월드컵은 4년에 한 번 개최된다. range()를 사용하여 2002~2050년까지 중 월드컵이 개최되는 연도를 출력하라.
- 요구역량 : range함수(시작,끝,증감폭) 을 알고 for문에서 활용할 수 있는가?
range 메서드의 3번째 파라미터가 증감폭을 의미하는 것을 알지 못했습니다. 이렇게 하나 또 배웠습니다.
2002
2006
2010
...
2042
2046
2050
참고) range의 세번 째 파라미터는 증감폭을 결정합니다.
>> print(list(range(0, 10, 2)))
[0, 2, 4, 6, 8]
정답확인for i in range(2002,2051,4):
print(i)
163
1부터 30까지의 숫자 중 3의 배수를 출력하라.
- 요구역량 : range함수(시작,끝,증감폭) 을 알고 for문에서 활용할 수 있는가?
3
6
9
12
15
18
21
24
27
30
정답확인for i in range(3,31,3):
print(i)
164
99부터 0까지 1씩 감소하는 숫자들을, 한 라인에 하나씩 출력하라.
- 요구역량 : range 메서드에서 출력되는 순서가 아닌, 반대의 순서로 for문을 활용하여 출력할 수 있는가?
저의 경우, 슬라이싱의 특징인 [::-1]을 활용하여 처음부터 거꾸로 출력한 반면, 답지의 경우 99에서 i를 차례로 빼서 출력하는 방식을 사용했습니다.
정답확인
for i in range(1,100)[::-1]:
print(i)
#답지
for i in range(100):
print(99 - i)
165
for문을 사용해서 아래와 같이 출력하라.
- 요구역량 : range 메서드를 통해 소수점을 표현할 수 있는가?
사실 0.1*i 를 한다면,, 부동소수점 오차로 인해 소수점이 기이하게 나오는 걸 확인할 수 있습니다. 그러므로 나눗셈을 활용하는 것이 깔끔합니다.
0.0
0.1
0.2
0.3
0.4
0.5
...
0.9
정답확인
for i in range(10):
print(i/10)
#뭔가 이상한,,,
for i in range(10):
print(i*0.1)
166
구구단 3단을 출력하라.
-요구역량 : 특정 정수형과 문자열을 혼합하여 for문을 이용하여 출력할 수 있는가?
3x1 = 3
3x2 = 6
3x3 = 9
3x4 = 12
3x5 = 15
3x6 = 18
3x7 = 21
3x8 = 24
3x9 = 27
정답확인for i in range(1,10):
print(3,"X",i,"=",3*i)
167
구구단 3단을 출력하라. 단 홀수 번째만 출력한다.
- 요구역량 : range메서드의 3번째 파라미터를 활용하여 특정 폭에 부합하는 요소만 for문으로 출력할 수 있는가?
저는 전체 범위(1~9)에서 if문을 써서 짝수를 걸렀고, 답지는 아예 범위를 축소시켜서 출력했습니다.
3x1 = 3
3x3 = 9
3x5 = 15
3x7 = 21
3x9 = 27
정답확인for i in range(1,10):
if i%2 != 0:
print(3,"X",i,"=",3*i)
#답지
num = 3
for i in range(1, 10, 2) :
print (num, "x", i, " = ", num * i)
168
1~10까지의 숫자에 대해 모두 더한 값을 출력하는 프로그램을 for 문을 사용하여 작성하라.
- 요구역량 : += 개념을 활용하여 범위 내 전체 수의 합을 for문으로 출력할 수 있는가?
일단 이게 되려면, 마지막 출력할 때 단 하나의 값만 출력하도록 설정해야한다. 그렇기 위해선 print문이 for 내부가 아닌, 외부에 빠져있어야한다.
또한 a+= i 라는 건 a= a + i 와 같은의미라는 것을 알고있어야하는데, 이런 개념을 실제로 풀어본 적은 없기에, 당황했고, 못풀었었다.
지금 배웠으니 다행,,
합 : 55
정답확인hab = 0
for i in range(1, 11):
hab += i
print ("합 :", hab)
169
1~10까지의 숫자 중 모든 홀수의 합을 출력하는 프로그램을 for 문을 사용하여 작성하라.
- 요구역량 : += 개념을 활용하여 범위 내 전체 수의 합을 for문으로 출력할 수 있는가? + range 메서드의 증가폭 파라미터를 활용할 수 있는가?
합: 25
정답확인a = 0
for i in range(1,11,2):
a += i
print("합:",a)
170
1~10까지의 숫자를 모두 곱한 값을 출력하는 프로그램을 for 문을 사용하여 작성하라.
- 요구역량 : *= 개념을 활용하여 범위 내 전체 수의 합을 for문으로 출력할 수 있는가?
정답확인
a = 1
for i in range(1,11):
a = a*i
print("곱:",a)
감사합니다.
'Coding Test > 초보자를 위한 파이썬 300제' 카테고리의 다른 글
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(181~190)_12.20 (0) | 2022.12.20 |
---|---|
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(171~180)_12.20 (0) | 2022.12.20 |
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(151~160)_12.20 (0) | 2022.12.20 |
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(141~150)_12.20 (0) | 2022.12.20 |
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(131~140)_12.20 (0) | 2022.12.20 |