Eat Study Love

먹고 공부하고 사랑하라

SW 만학도/Jump to Python

Jump To Python if,for,while문 3장 연습문제 [4]

eatplaylove 2022. 12. 7. 23:58

3장 가자가자!

 

Q1.

아래를 실행했을 때 결과는?

a = "Life is too short, you need python"

 

# if "wife" in a:
#     print("wife")
# elif "python" in a and "you" not in a :
#     print("python")
# elif "shirt" not in a:
#     print("shirt")
# elif "need" in a:
#     print("need")
# else:
#     print("none")

정답 : shirt

-> shirt need none이 아니다. if문 + elif문 에서는 한 번이라도 조건식이 True가 뜨면 거기서 STOP!

주의하세요~

 

Q2.

 

# while문을 사용해서 1부터 1000까지의 자연수 중 3의 배수의 합을 구해보아라
num=0
# result=0
# while True:
#     num+=1
#     if num%3==0:
#         result = result + num
#     elif num > 1000 :
#         break
# print(result)

뭐,, 맞는지도 모르겠다. 맞겠지 뭐 :) if문에서 굳이 else를 안 써도 된다는 걸 알았네.

elif만 써도 코드는 돌고 도네 돌아 가네

 

그리고 생각해보니 그냥 while True 말고, True 대신 num<=1000했으면 elif 굳이 안 써도 되었당.

 

Q3.

 

# while문을 사용하여 다음과 같이 별(*)을 표시하는 프로그램을 작성해 보자.

# *

# **

# ***

# ****

# *****

2번 문제 풀고 나니까 좀 쉽다. 너저지분한 elif 안 쓰기

 

# x=0
# while x<=5 :
#    x+=1
#    print('*'*x)

 

Q4.

 

# for문을 사용해서 숫자 1부터 100까지 출력해 보라.

기초개념이지요~

for x in range(1,101):
#     print(x,end=' ')

vertical 하게 숫자가 쫙~ 배치 되는 걸 막으려고 print문 안에 end를 써서 행구분이 아닌 띄어쓰기로 출력구분이 될 수 있게 하였다. = 까불어 보았다

 

Q5. 

 

# A학급엔 학생 10명이 있다. 학생들 시험점수가 다음과 같을 때, for문을 이용해 A학급의 평균점수를 구하라
# [70,60,55,75,95,90,80,80,85,100]

2번과 비슷하다.

 

# A=[70,60,55,75,95,90,80,80,85,100]
# sum = 0
# for x in A:
#     sum = sum + x
# print('평균은 ',sum/len(A))

79.0이 뭔가 거슬렸다. 그래서 소수점 없애는 방법을 찾아보다가..

print(f'평균은 {sum/len(A):.0f}점이다.')

요런식으로 f-string에서 {format : .?f} 라고 하면 소수점 ?번째 자리까지만 표현이라고 하여 0f를 추가!

 

 

Q6. LAST!

 

# 리스트 중에서 홀수에만 2를 곱하여 저장하는 다음 코드가 있다.

# 위 코드를 리스트 내포(list comprehension)를 사용하여 표현해 보자.
 

# numbers = [1, 2, 3, 4, 5]

# result = []

# for n in numbers:

#     if n % 2 == 1:

#         result.append(n*2)

list comprehension이 뭔가 했더니 코드를 그냥 한 줄로 으겨 넣는 그것이었다.

 

오답 :

# numbers=[1,2,3,4,5]
# result=[]

# result.append(n*2 for n in numbers if n%2==1)
# print(result)

append 안에서는 구구절절 코딩을 하면 안 되나 보다. result 결과 값이 generator 어쩌고 저쩌고 이상하게 나온다.

append를 쓸 때에 값을 하나만 줄 수 있어서 그런가.. result.append(1,2,3)과 같이 값을 3개 던져줘도 error가 뜬다.

 

어쨌든 정답 :

# numbers=[1,2,3,4,5]
# result = [n*2 for n in numbers if n%2==1]
# print(result)

 

뭐든 기본이 탄탄해야 한다고 했다. 기본기라고 무시하지말고 지긋이 수련하기!

 

- E. O. D. -