반응형

(1) 리스트 다루기

fruits = ["사과", "바나나", "딸기", "포도"]
print("과일 목록:", fruits)

 

[결과값]

과일 목록: ['사과', '바나나', '딸기', '포도']

 

파이썬 리스트는 순서가 있는 데이터의 컬렉션으로, 여러 값을 담을 수 있는 가변(mutable)한 자료형입니다. 리스트는 대괄호 []를 사용하여 정의되며, 각 항목은 콤마 ,로 구분됩니다.

 

(2) 딕셔너리 활용하기

student = {"이름": "철수", "나이": 15, "성적": 90}
print("학생 정보:", student)

 

[결과값]

학생 정보: {'이름': '철수', '나이': 15, '성적': 90}

 

리스트는 순수가 있는 데이터의 컬렉션으로 각 항목은 콤마로 구분. 딕셔너리는 순서가 없는 데이터의 컬렉션으로 각 항목은 키와 밸류의 한 상으로 구분, 중괄호를 사용하고, 각 쌍은 콤마로 구분된다.

 

(3) 제곱근

import math

result = math.sqrt(25)
print("제곱근:", result)

 

[결과값]

제곱근: 5.0

 

(4) 예외처리

try:
    result = 10 / 0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

 

[결과값]

0으로 나눌 수 없습니다.

 

1.    try 블록:

-       try 키워드 아래의 블록은 예외가 발생할 수 있는 코드를 포함합니다.

-       여기서는 10 / 0이라는 수식이 있습니다. 이는 0으로 나누는 연산으로, 이는 ZeroDivisionError 예외를 발생시킵니다.

 

2.    except 블록:

-       except 키워드는 try 블록에서 발생한 예외를 처리하기 위한 블록을 나타냅니다.

-       ZeroDivisionError 0으로 나누려고 할 때 발생하는 예외입니다. 이 예외가 발생하면 해당 블록이 실행됩니다.

-       여기서는 예외가 발생했을 때 출력할 메시지를 print("0으로 나눌 수 없습니다.")로 지정했습니다.

 

3.    실행 흐름:

-       try 블록의 코드가 실행됩니다.

-       예외가 발생하면 프로그램의 흐름이 except 블록으로 이동하고, 지정된 메시지가 출력됩니다.

-       예외가 발생하지 않으면 except 블록은 건너뛰어집니다.

 

 

이 코드는 0으로 나누는 오류에 대한 처리를 담고 있습니다. 예외 처리를 통해 프로그램이 비정상적인 상황에서도 적절히 대응할 수 있도록 도와줍니다.

 

try:
    result = 10 / 2
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

 

예외가 발생하지 않으므로 except 블록은 건너뛰어지고 아무 결과값도 나오지 않는다.

 

이번 포스팅이 많은 파이썬 공부에 작은 도움이 되었기를 바랍니다. 

반응형
Posted by 마르띤
,
반응형

파이썬 코딩 실력을 한 단계 늘려줄 함수를 고른다면 단연컨데 for문을 고를 것이다.

for문은 반복적으로 뭔가 반복적인 계산을 수행할 때 사용하면 된다. 이것만 기억하면 된다. 반복은 컴퓨터가 사람보다 잘 한다는 것을!

 

1. 파이썬으로 2단 구구단 만들어보기

number = [1,2,3,4,5,6,7,8,9]
for i in number:
    print(2*i)

첫번째 줄: 먼저 number에 1부터 9까지의 숫자를 리스트에 담아 number라는 변수에 담아 줍니다. 이제 for문을 조합해 2단을 출력해볼 순서이다.

두번째 줄: numbers의 각 숫자 값 하나하나를 변수 i에 입력

세번째 줄: 2 * i의 결과값을 출력. 주의할 것은 for문이 적용되는 것을 알리기 위해 들여쓰기를 한 것이다.

 

위 코드를 돌리면 아래와 같은 결과값을 얻을 수 있다.

2
4
6
8
10
12
14
16
18

 

2. 파이썬으로 1부터 10까지 더해보기

num = 0 
for i in range(1,11):
    num = num +i
    print(num)

첫번째 줄: num이라는 변수에 0이라고 저장을 해 준다.

두번째 줄: range를 사용, 숫자 1~10을 i에 넣어준다. range(1,11)은 1~11이 아닌 1~10임을 기억하자

세번째 줄: num=0에서 i 그러니까 1부터 10을 차례대로 더해준다. 처음 num은 0 이므로 0 + 첫번째  i 값인 0+1의 결과값인 1을 적용한다. 그리고 나서는 새롭게 저장된 num 1에 두 번째 i 값인 2를 더해주어 3이라는 결과값을 얻는다.

네번째 줄: num의 결과값을 출력한다.

 

그러면 아래와 같은 결과값을 얻을 수 있다.

1
3
6
10
15
21
28
36
45
55

 

range가 나왔는데 조금 부연설명을 하면 아래와 같다. for와 range문은 늘 자주 쓰이는 것을 보게 될 것이다. 그도 그럴 것이 for문을 통해 반복할 숫자를 range를 통해 지정할 수 있기 때문! range(10)은 1~10이 아닌 0~9임을 기억하면 된다. for문이 적용될 print 는 들여쓰기를 하였고, i값에 0~9가 반복적으로 등장함을 볼 수 있다.

 

for i in range(10):
    print("Hello, world", i)
Hello, world 0
Hello, world 1
Hello, world 2
Hello, world 3
Hello, world 4
Hello, world 5
Hello, world 6
Hello, world 7
Hello, world 8
Hello, world 9
 

 

3. 파이썬으로 2단 구구단을 표현하되, 그 과정도 함께 출력하자

for i in range(1,10):
    print(2, 'x',i, '=', 2*i )

첫번째 줄: 먼저 range(1,10)을 이용, 1~9의 값을 i에 넣어준다.

두번째 줄: for문이 적용되어 들여쓰기를 하였고, 2 x i 를 프린트 한 후 결과값엔 2*i를 적용해준다. 그러면 아래와 같은 결과값을 얻을 수 있다.

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18

 

4. 파이썬으로 구구단 2단, 3단 구해보기. for문 반복적으로 사용하기

for i in range(2,4):
    for j in range(1,10):
        print(i,'x',j,'=',i*j)

첫번째 줄: range(2,4)를 통해 2,3 값을 변수 i에 저장

두번째 줄: 들여쓰기를 한 후 숫자 1~9의 값을 또 다른 변수 j에 저장

세번째 줄: 2 * 1~9 , 그리고 3*1~9값을 반복한 후 프린트. 그 결과값은 아래와 같다.

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27

 

for문의 가장 기초 of  기초 내용이다. for문을 잘 쓰면 크롤링을 하거나 머신 러닝 시 매우 유용하다. 크롤링 할 때 긁어오는 여러 페이지 값을 입력하지 않아도 되고, 머신러닝을 할 때 최적의 이웃값을 구할 때 반복적으로 n 값을 넣어주면서 최적의 결과값을 얻을 수 있기도 하다.

 

숙제로 2,3단 뿐만 아니라 9단까지 해보는 건 어떨지? 

반응형
Posted by 마르띤
,
반응형

source: R을 이용한 데이터 처리 & 분석 실무, 서민구 지음

http://book.naver.com/bookdb/book_detail.nhn?bid=8317471


1. 스칼라: 단일 차원의 값을 뜻함. 1,2,3

1) NA: Not available라는 상수. 값이 없음, 결측값. 값이 빠진 경우를 뜻함.

> four<-NA

> is.na(four)

[1] TRUE

 

2) NULL: NA와는 다른 개념으로 undefined , 미정값.

> x<-NULL

> is.null(x)

[1] TRUE

> is.null(1)

[1] FALSE

> is.null(NA)

[1] FALSE

> is.na(NULL)

logical(0)

Warning message:

In is.na(NULL) : is.na() applied to non-(list or vector) of type 'NULL'

 

3) 진리값: T/F 사용

> T&F

[1] FALSE

> T|T

[1] TRUE

> T|F

[1] TRUE

> T<-TRUE

> T

 [1] TRUE

> T<-FALSE

> T

[1] FALSE

> TRUE<-FALSE

Error in TRUE <- FALSE : invalid (do_set) left-hand side to assignment

 

잘 이해안되는 부분..좀 더 공부 필요 한 부분.

 

> c(TRUE,TRUE)&c(TRUE,FALSE)

[1]  TRUE FALSE

> c(TRUE,TRUE)&&c(TRUE,FALSE)

[1] TRUE

 

 

4) 팩터: 범주형 (categorical) 데이터 자료를 표현하기 위한 데이터 타입. //

 - 명목형(Nominal): /

 - 순서형(Ordinal): //

 

> sex<-factor("m",c("m","f")) #sex에는 "m" 지정, 팩터의 레벨은 "m","f" 제한> sex

[1] m

Levels: m f

> nlevels(sex)

[1] 2

> levels(sex)

[1] "m" "f"

> levels(sex)[1]

[1] "m"

> levels(sex)[2]

[1] "f"

> levels(sex)<-c("male","female")

> sex

[1] male

Levels: male female

> factor(c("m","m","f"),c("m","f"))

[1] m m f

Levels: m f

> factor(c("m","m","f"))

[1] m m f

Levels: f m

> ordered("a",c("a","b","c"))

[1] a

Levels: a < b < c

 

2. 벡터(Vector): 배열의 개념. 가지 스칼라 데이터 타입의 데이터를 저장

) 숫자만 저장 또는 문자열만 저장하는 배열이 벡터에 해당.

> x<-c(1,3,4)

> names(x)<-c("a","b","c")

> x

a b c

1 3 4

> x[1]

a

1

> x[-1]

b c

3 4

> x[c(1,3)]

a c

1 4

> x["a"]

a

1

> x[c("b","c")]

b c

3 4

> names(x)[2]

[1] "b"

> length(x)

[1] 3

> nrow(x)

NULL

> NROW(x)

[1] 3

> identical(c(1,2,3),c(1,2,3)) #객체가 동일한지 판단

[1] TRUE

> identical(c(1,2,3),c(1,2,1))

[1] FALSE

> "a"%in%c("a","b","c")

[1] TRUE

> "d"%in%c("a","b","c")

[1] FALSE

> x<-c(1:5)

> x

[1] 1 2 3 4 5

> x+1

[1] 2 3 4 5 6

> 10-x

[1] 9 8 7 6 5

> c(1,2,3)==c(1,2,3)

[1] TRUE TRUE TRUE

> union(c("a","b"),"d")

[1] "a" "b" "d"

> intersect(c("a","b","c"),c("a","d"))

[1] "a"

> setequal(c("a","b","c"),c("a","d"))

[1] FALSE

> setequal(c("a","b"),c("a","b","b"))

[1] TRUE

> setequal(c("a","b"),c("a","b","c"))

[1] FALSE

 

> seq(3,7)

[1] 3 4 5 6 7

> seq(7,3)

[1] 7 6 5 4 3

> seq(3,7,2)

[1] 3 5 7

> seq(3,7,3)

[1] 3 6

> x<-seq(2,10,2)

> x

[1]  2  4  6  8 10

> 1:NROW(x)

[1] 1 2 3 4 5

> seq_along(x)

[1] 1 2 3 4 5

> rep(1:2,times=5)

 [1] 1 2 1 2 1 2 1 2 1 2

> rep(1:2,each=5)

 [1] 1 1 1 1 1 2 2 2 2 2

> rep(1:2,each=5,times=2)

 [1] 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2

> (x<-list(name="foo",height=70))

$name

[1] "foo"

 

$height

[1] 70

 

3. list: 벡터와 달리 서로 다른 값을 담을 있음.

> (x<-list(names="foo",height=c(1,3,5)))

$names

[1] "foo"

 

$height

[1] 1 3 5

 

> list(a=list(val=c(1,2,3)),b=list(val=c(1,2,3,4)))

$a

$a$val

[1] 1 2 3

 

 

$b

$b$val

[1] 1 2 3 4

 

 

> x$name

[1] "foo"

> x

$names

[1] "foo"

 

$height

[1] 1 3 5

 

> x$names

[1] "foo"

> x$height

[1] 1 3 5

> x[1]

$names

[1] "foo"

 

> x[[1]]

[1] "foo"

 

4. matrix: 행렬

> matrix(c(1:9),nrow=3,byrow=T)

     [,1] [,2] [,3]

[1,]    1    4    7

[2,]    2    5    8

[3,]    3    6    9

> matrix(c(1:9),nrow=3)

     [,1] [,2] [,3]

[1,]    1    4    7

[2,]    2    5    8

[3,]    3    6    9

> matrix(c(1:9),nrow=3,

+        dimnames=list(c("r1","r2","r3"),c("c1","c2","c3")))

   c1 c2 c3

r1  1  4  7

r2  2  5  8

r3  3  6  9

> (x<-matrix(c(1:9),nrow=3))

     [,1] [,2] [,3]

[1,]    1    4    7

[2,]    2    5    8

[3,]    3    6    9

> dimnames(x)<-list(c("r4","r5","r6"),c("c4","c5","c6"))

> x

   c4 c5 c6

r4  1  4  7

r5  2  5  8

r6  3  6  9

>

> x<-matrix(1:9,ncol=3)

> x

     [,1] [,2] [,3]

[1,]    1    4    7

[2,]    2    5    8

[3,]    3    6    9

> rownames(x)<-c("r1","r2","r3")

> x

   [,1] [,2] [,3]

r1    1    4    7

r2    2    5    8

r3    3    6    9

> colnames(x)<-c("c1","c2","c3")

> x

   c1 c2 c3

r1  1  4  7

r2  2  5  8

r3  3  6  9

> x[1,1]

[1] 1

> x[,2]

r1 r2 r3

 4  5  6

> x[1:2,]

   c1 c2 c3

r1  1  4  7

r2  2  5  8

> x[,1:2]

   c1 c2

r1  1  4

r2  2  5

r3  3  6

> x[c(1,2),c(2,1)]

   c2 c1

r1  4  1

r2  5  2

> x[c(1,1),c(1,3)]

   c1 c3

r1  1  7

r1  1  7

> x[c(1,3),c(1,3)]

   c1 c3

r1  1  7

r3  3  9

> x[c(2,1),c(1,2)]

   c1 c2

r2  2  5

r1  1  4

> x<-matrix(1:9,nrow=3)

> x*2

     [,1] [,2] [,3]

[1,]    2    8   14

[2,]    4   10   16

[3,]    6   12   18

> x+x

     [,1] [,2] [,3]

[1,]    2    8   14

[2,]    4   10   16

[3,]    6   12   18

> x%*%x

     [,1] [,2] [,3]

[1,]   30   66  102

[2,]   36   81  126

[3,]   42   96  150

> t(x)

     [,1] [,2] [,3]

[1,]    1    2    3

[2,]    4    5    6

[3,]    7    8    9

> (x<-matrix(c(1:4),ncol=2))

     [,1] [,2]

[1,]    1    3

[2,]    2    4

> solve(x)

     [,1] [,2]

[1,]   -2  1.5

[2,]    1 -0.5

> (x<-matrix(c(1:6),nrow=2))

     [,1] [,2] [,3]

[1,]    1    3    5

[2,]    2    4    6

> dim(x)

[1] 2 3

> dim(x)<-c(3,2)

> x

     [,1] [,2]

[1,]    1    4

[2,]    2    5

[3,]    3    6

  

5. Array: 배열. Matrix행렬이 2차원이라면 배열은 다차원 데이터

> array(1:12,dim=c(3,4))

     [,1] [,2] [,3] [,4]

[1,]    1    4    7   10

[2,]    2    5    8   11

[3,]    3    6    9   12

> (x<-array(1:12,dim=c(2,2,3)))

, , 1

 

     [,1] [,2]

[1,]    1    3

[2,]    2    4

 

, , 2

 

     [,1] [,2]

[1,]    5    7

[2,]    6    8

 

, , 3

 

     [,1] [,2]

[1,]    9   11

[2,]   10   12

 

> x[1,1,3]

[1] 9

반응형
Posted by 마르띤
,