본문 바로가기

Python

211230 학습일기

그동안 잘 쉬었으니 오늘부터 다시 빡세게 해보자

 

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.

함수는 들어온 입력값을 받아 어떤 처리를 하여 적절한 결괏값을 돌려준다.
입력값 → 함수 → 결괏값

 

 

https://wikidocs.net/book/1

 

점프 투 파이썬

** 점프 투 파이썬 오프라인 책(개정판) 출간 !! (2019.06) ** * [책 구입 안내](https://wikidocs.net/4321) 이 책은 파이썬 ...

wikidocs.net

 

'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