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가 뜬다.
어쨌든 정답 :
# result = [n*2 for n in numbers if n%2==1]
# print(result)
뭐든 기본이 탄탄해야 한다고 했다. 기본기라고 무시하지말고 지긋이 수련하기!
- E. O. D. -