그동안 잘 쉬었으니 오늘부터 다시 빡세게 해보자
1.
range도 type이 될 수 있다.
a = range(10)
print(type(a))
#<class 'range'>
a = range(10)
print(a)
#range(0, 10)
2.
for i in range(1,10):
for j in range(2,10):
print(i*j, end=" ")
print(" ")
여기서 print(" ")의 역할은 다음줄로 넘어가게 하는 역할을 한다.
end = " "을 넣었기 때문에 i 동일, j가 바뀔 때에는 i*j가 한줄로 띄어쓰기가 되어서 출력된다.
근데 i가 바뀔 때에는 줄 바꿈을 해줘야 하기 때문에 print("")을 넣은 것이다.
결괏값으로 비교해보자
위 코드의 출력값은 다음과 같다.
2 3 4 5 6 7 8 9
4 6 8 10 12 14 16 18
6 9 12 15 18 21 24 27
8 12 16 20 24 28 32 36
10 15 20 25 30 35 40 45
12 18 24 30 36 42 48 54
14 21 28 35 42 49 56 63
16 24 32 40 48 56 64 72
18 27 36 45 54 63 72 81
print(" ")를 뺀 코드의 결괏값은 다음과 같다.
2 3 4 5 6 7 8 9 4 6 8 10 12 14 16 18 6 9 12 15 18 21 24 27 8 12 16 20 24 28 32 36 10 15 20 25 30 35 40 45 12 18 24 30 36 42 48 54 14 21 28 35 42 49 56 63 16 24 32 40 48 56 64 72 18 27 36 45 54 63 72 81
3.
리스트 내포(List Comprehension)은 리스트 안에 for문을 포함하는 것을 의미한다.
리스트 내포의 일반적인 문법은 다음과 같다.
표현식 for 항목 in 반복가능객체 if 조건문
if 조건문 은 생략 가능하다.
a = [1,2,3,4]
b = [i*3 for i in a]
print(b)
#[3, 6, 9, 12]
if 를 안 쓰면 위의 형태와 같고 if를 쓰면 아래의 형태와 같다.
a = [1,2,3,4]
b = [i*3 for i in a if i%2==0]
print(b)
#[6, 12]
for문을 두개 사용하여 리스트 내포를 할 수도 있다.
a= [x*y for x in range(1,10)
for y in range(2,10)]
print(a)
여기서 신기한 점은 for y 시작할 때 어떠한 이스케이프 코드 없이 그냥 써도 문제가 없다.(이스케이프 코드가 있으면 오류가 남)
위와 같이 indent를 해줘도 되고 안 해줘도 된다.
<3장 문제 풀이>
#1
shirt
#2
i=1
sum = 0
while True:
sum+=i*3
i=i+1
if i*3>1000:
break
print(sum)
#3
i=1
while i<=5:
print(i*"*")
i+=1
#4
for i in range(1,101):
print(i)
#5
score = [70, 60, 55, 75, 95, 90, 80, 80, 85, 100]
sum = 0
for i in range(len(score)):
sum += score[i]
print(sum//len(score))
#6
numbers = [1, 2, 3, 4, 5]
result = [i*2 for i in numbers if i%2==0]
print(result)
4.
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
need가 출력되는 조건도 만족하지만 need가 출력되지 않는 이유는 need 명령문은 elif 명령문이고 또 다른 elif 명령문인 shirt 명령문 뒤에 있기 때문이다.
따라서 shirt와 need가 동시에 출력되게 하기 위해서는 need 명령문의 elif를 if로 바꿔야 한다.
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")
if "need" in a: print("need")
else: print("none")
shirt
need
5.
반복되는 부분이 있을 경우 "반복적으로 사용되는 가치 있는 부분"을 한 뭉치로 묶어서 "어떤 입력값을 주었을 때 어떤 결괏값을 돌려준다" 라는 식의 함수를 작성하자.
파이썬 함수의 구조는 다음과 같다.
def 함수명(매개변수):
<수행할 문장1>
<수행할 문장2>
def는 함수를 만들 때 사용하는 예약어이다.
함수 이름 뒤 괄호 안의 매개변수는 이 함수에 입력으로 전달되는 값을 받는 변수이다.
def multiply(a,b):
return a*b
이 함수의 이름은 multiply이고 입력으로 2개의 값을 받으며 결괏값은 2개의 입력값을 곱한 값이다.
return은 함수의 결괏값을 돌려주는 명령어이다.(그동안 return이 넘 헷갈렸다. 그래도 아래의 예시를 보면 아~~ 하는 느낌이다.)
아래 두개의 코드의 결괏값은 동일하다.
def multiply(a,b):
return a*b
c= multiply(1,2)
print(c)
def multiply(a,b):
return a*b
a=1
b=2
c= multiply(1,2)
print(c)
출력값은 아래와 같다.
2
6.
매개변수(parameter)와 인수(argument)를 구별하자.
이 둘은 혼용해서 사용되는 헷갈리는 용어이므로 잘 기억해두는 것이 좋다.
매개변수는 함수에 입력으로 전달된 값을 받는 변수이고
인수는 함수를 호출할 때 전달하는 입력값이다.
def multiply(a,b): #a,b는 매개변수
return(a*b)
print(multiply(3,4)) #3,4는 인수
이정도로 생각하면 될 것 같다.
7.
함수는 들어온 입력값을 받아 어떤 처리를 하여 적절한 결괏값을 돌려준다.
입력값 → 함수 → 결괏값
'Python' 카테고리의 다른 글
220103 학습일기 (0) | 2022.01.03 |
---|---|
211231 학습일기 (0) | 2021.12.31 |
211224 학습일기 (0) | 2021.12.26 |
211223 학습일기 (0) | 2021.12.23 |
211222 학습일기 (0) | 2021.12.22 |