이전까지 집합과 출력, List를 배웠어요. 집합과 List의 필요를 간단히 이야기하고 for,if,while로 넘어가볼게요.
a= range(1,101) ; b=range(51,151); c=range(101,201);
d=a+b+c
len(d)
setd=set(d)
len(setd)
print d[0]
print d[-1]
이 용법들을 사람이 이해하기 쉬우면 영어로 대입해서 생각하면 좋아요. 먼저 for부터 시작하죠.
for i in range(1,11):
print i
for x in range(1,11):
print x
num=0
for i in range(1,11):
num=num+1
print num
num=0
for i in range(1,11):
num+=1
print num
l=[]
for i in range(1,11):
l.append(2*i)
print l
Q1: range(1,11)과 for문을 이용하여 3의 배수들을 생성해보세요.
num = 5
if num >=5:
print "yes"
else: print "no"
num = 4
if num>=5:
print "yes"
else: print "no"
num이 5에요 근데 문장은 5보다 크거나 같으면 "yes"를 출력하라 였으니, "yes"의 결과를 낳은거죠. 반대로 4면 no가 출력이 되는거죠
num = 5
if num >=5:
print "yes"
else: print "no"
파이썬은 공간을 인식해요. 조건식과 문장이 같은 위치에 있으면 같은 식으로 여겨 동시에 실행하려고 한다고 이해하면 돼요. 그런데 for,if,while은 조건식이 맞는 지 먼저 확인한 후 실행하고 싶은 문장들을 실행하기 때문에 조건식 뒤에 있어야 하는거죠
for i in range(1,11):
if i>=5:
print "yes"
else: print "no"
위에 있는 두 개를 결합하면 이런식이겠죠? 문장을 실행하는 선언문은 print "yes"와 print "no"밖에 없다는 것을 먼저 확인해볼게요. :뒤에 있는 문장이니깐요?! 그럼 구조를 분석해볼게요. range(1,11) 안에있는(in) i엔 뒤의 문장을 실행하라고 했어요. 근데, 뒤의 문장엔 i가 5보다 크거나 같으면 'yes'아니면 'no'라고 했으니 i가 1,2,3,4일 때는 no를 5보다 크거나 같은 값들은 'yes'를 출력하게 되는거죠
for i in [2,5,6,1,7,2,8,9,0]:
if i>=5:
print "yes"
else: print "no"
for i in [2,5,6,1,7,2,8,9,5]:
if i>=6:
print "it is bigger than 5"
elif i<=4: print "smaller than 5"
else: print "i must be 5"
elif는 else if의 준말이에요. 위 문장을 결과값을 비교하면서 해석하고자 하면, 실력이 껑충 늘거에요!
for i in [2,5,6,1,7,2,8,9,5]:
if i>=6:
print "it is bigger than 5"
elif i>=8: print "bigger than 8"
else: print "smaller than 5"
Q2: 위의 문장을 8보다 크다라고 출력할 수 있게끔 바꾸어 보세요
num = 0
while num <5:
print "smaller than 5"
num+=1
쉽게 해석하자면, num이 5보다 작은 동안 5보다 작다고 말해달라는 문장인거죠.
while과 if와 섞게 되면 이런식으로 할 수도 있죠
x=1
num=0
while x==1:
print "okay"
num+=1
if num ==5:
break
x는 문장에서 변화시켜줄 요인이 전혀없기 때문에 항상 1일거에요.(만약 if문장이 없었다면 이런 문장은 무한번 실행되는 무한루프가 돼요! 절대로 실행하지 마세요...ㄷㄷ). 문장이 돌아가는 동안 num을 1씩 더하라고 했는데, 만약 5와 같으면 break(쉬다,끝내다): 문장을 끝내라는거죠.
x=1
num=0
while x==1:
num+=1
if num ==5:
continue
elif num ==10:
print "okay"
break
else: print "okay"
아까처럼 했으면 okay가 10번 실행되었어야 했는데, continue때문에 9번으로 준것을 볼 수 있어요. continue(계속하다)라는 말이죠? 5일때 아무것도 안 한 후 "계속해!"라고 했으니 1번은 'okay'를 출력 안 하게 되는거죠.
import random
data=[]
for i in range(1000):
data.append(random.randint(1,100))
les50 =[]
lar50 =[]
for i in data:
if i>=50:
lar50.append(i)
elif i<50:
les50.append(i)
len(les50)+len(lar50)==len(data)
print set(les50)
print set(lar50)
%%html
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Black_cherry_tree_histogram.svg/220px-Black_cherry_tree_histogram.svg.png" height=200 width=300><img src="http://www.idlcoyote.com/cg_tips/scatter2d_1.png" height="300" width="400">
Q3: range(1,101)에서 짝수와 홀수를 List로 각각 나누어 볼까요?? 이 문제는 생각 많이 해보고 푸세요!
%%html
<a href="http://euler.synap.co.kr/">오일러 프로젝트</a>&
<a href="http://codingdojang.com/">코딩도장</a>
#Q1:
a=[]
for i in range(1,11):
a.append(3*i)
#Q2:
for i in [2,5,6,1,7,2,8,9,5]:
if i>=8:
print "bigger than 8"
elif i>=6: print "it is bigger than 5"
else: print "smaller than 5"
#Q3:
odd=[]
even=[]
for i in range(1,101):
if i%2==0:
even.append(i)
else: odd.append(i)