728x90

지금까지 리스트, 튜플 등과 같은 여러 개가 이어져 있는 자료형을 공부했다.

 

같은 맥락으로 있는 문자열도 메서드를 사용해보자!

 

문자열 바꾸기!  replace 메서드

>>> 'Hello, world!'.replace('world', 'H4C') # replace('바꿀문자열', '새문자열')
'Hello, H4C!'

+ 결과 유지를 위해서 변수에 replace를 사용하면 된다!!

 

 

문자열 분리하기! split 메서드

>>> 'apple pear grape pineapple orange'.split() # split(공백)을 기분으로 분리하여 리스트로 만듬
['apple', 'pear', 'grape', 'pineapple', 'orange']

>>> 'apple, pear, grape, pineapple, orange'.split(', ') # split(', ')을 기분으로 분리하여 리스트로 만듬
['apple', 'pear', 'grape', 'pineapple', 'orange']

 

!! 소문자를 대문자로 바꾸기 ( 자주 사용!!) upper 메서드

!! 대문자를 소문자로 바꾸기 ( 자주 사용!!) lower 메서드

>>> 'team'.upper() # 소문자를 대문자로 바꾸기
'Team'

>>> 'Team'.lower() # 대문자를 소문자로 바꾸기
'team'

 

 

문자열을 왼쪽 정렬하기 (암호문제에서 자주쓰임) ljust 메서드

>>> 'Project'.ljust(10)
'Project    '    

Project(3)이라는 뜻이다!

 

 

문자열을 오른쪽 정렬하기 (암호문제에서 자주쓰임) rjust 메서드

>>> 'Project'.rjust(10)
'    Project'    

(3)Project이라는 뜻이다!

 

문자열 위치 찾기 index('찾을문자열') 

>>> 'TeamH4C'.index('ea')
2

파이썬은 다양한 방법으로 문자열을 만들 수 있다.

 

1. 서식 지정자(format specifier)

2. format 메서드로 문자열을 만드는 문자열 포매팅(string formatting)

 

문자열 안에서 특정 부분을 원하는 값으로 바꿀 때 서식 지정자 또는 문자열 포매팅을 사용한다.

 

서식지정자(format specifier)

>>> 'Team %s.' % 'H4C' # '%s' % '문자열'
'Team H4C.'

서식 지정자는 %로 시작하고 자료형을 뜻하는 문자가 붙는다.

%는 문자열 이라는 뜻이다. 

s는 String의 s이다.

문자열 안에 %s를 넣고 그 뒤에 %를 붙인 뒤 'H4C'를 지정해주면 %s 부분이

'H4C'로 바뀐다.

 

+ 서식 지정자로 숫자 넣기 

>>> 'Team %d good.' % 100 # '%d' % 숫자
'Team 100 good.'

 

+ 서식 지정자로 문자열 안에 값 여러 개 넣기

>>> 'Team %s %d %s.' % ('H', 4, 'C') # '%s %d %s' % ('문자열', 숫자, '문자열')
'Team H 4 C.'

 

 

format 메서드 사용하기

>>> 'Team, {0}'.format('H4C') # '{인덱스}'.format(값)
'Team, H4C'
>>> 'Team, {0}'.format(100) # '{인덱스}'.format(값)
'Team, 100'

 

+ format 메서드로 같은 값을 여러 개 넣기

>>> '{0} {0} {1} {1}'.format('Python', 'Script')
'Python Python Script Script'

 

+ format 메서드로 문자열 정렬하기

>>> '{0:<10}'.format('python') # '{인덱스:<길이}'.format(값)
'python	'

 

'{0:<10}' 이 어떤 뜻인지 알 고 있나요?

바로

왼쪽방향으로 부등호가 가리키고 있는데 문자열을 지정된 왼쪽 길이로

만든 뒤 왼쪽으로 정렬하고 남는 공간을 공백으로 채운다.

728x90
728x90

우리는 지금까지 1차원 리스트를 사용했는데

 

오늘은 평면 구조의 2차원 리스트를 만들어보자

 

 

2차원 리스트는 리스트 안에 리스트를 넣어서 만들 수 있다. ,(콤마)로 구분한다.

>>> a = [[10, 20], [30, 40], [50, 60]]
>>> a
[[10, 20], [30, 40], [50, 60]]

형식은 리스트 = [[값, 값], [값, 값], [값, 값]] 이다. 

이해하기 쉽게

[값, 값]

[값, 값]

[값, 값]

이러한 2차원 리스트를 머리에 생각하면 된다.

 

 

2차원 리스트의 요소에 접근해보자!

>>> a = [[10, 20], [30, 40], [50, 60]]
>>> a[0] [0]            # 세로 인덱스 0, 가로 인덱스 0인 요소 출력
10
>>> a[1][1]           # 세로 인덱스 1, 가로 인덱스 1인 요소 출력
40
>>> a[2][1]           # 세로 인덱스 2, 가로 인덱스 0인 요소 출력
60
>>> a[0][1] = 1000    # 세로 인덱스 0, 가로 인덱스 1인 요소에 값 할당
>>> a[0][1]
1000

a[0] [0]이 가리키는 곳은 10이다. 왜냐하면 가로0 세로0에 위치한 값이 10이기 때문이다.

a[1] [1]이 가리키는 곳은 40이다. 

[10, 20]

[30, 40]

[50, 60]

으로 생각해야 한다. 세로1 가로1이 위치한 값은 40이다.

a[2] [1]이 가리키는 곳은 60이다.

 

어렵지 않다!! 

 

 

이번에는 for 반복문을 사용해서 출력을 해볼것이다.

>>> a = [[10, 20], [30, 40], [50, 60]]
>>> for x, y in a:    # 리스트의 가로 한 줄(안쪽 리스트)에서 요소 두 개를 꺼냄
...     print(x, y)
...
10 20
30 40
50 60

2차원 리스트에 for 반복문을 사용하면 가로 한 줄씩 반복한다.

안에 있던 리스트가 모두 반복되어 x, y 변수 두개를 지정해주면 요소 두개를 꺼내온다.

 

 

for 반복문range를 사용해서 출력해보자

a = [[10, 20], [30, 40], [50, 60]]
 
for i in range(len(a)):            # 세로 크기
    for j in range(len(a[i])):     # 가로 크기
        print(a[i][j], end=' ')
    print()

i 변수에 세로크기를 a로 받아서 3만큼 반복하고

j 변수에 가로크기를 a에 리스트로 받아 2번 반복한다.


while 반복문을 사용하기

a = [[10, 20], [30, 40], [50, 60]]
 
i = 0
while i < len(a):    # 반복할 때 리스트의 크기 활용(세로 크기)
    x, y = a[i]      # 요소 두 개를 한꺼번에 가져오기
    print(x, y)
    i += 1           # 인덱스를 1 증가시킴

i < len(a): 리스트에 크기를 len(a)로 구해서,

x, y = a[i] 요소를 x, y로 가져온다. 

인덱스를 1증가시켜 반복하면 

0, 1, 2 총 3번 반복하게 되어 출력을 한다.

 

 

728x90
728x90

리스트 기능에 대해 조금 배우고왔다. 

 

공평하게 튜플도 배워보자

 

튜플에서 특정 값의 인덱스 구하기 index 메서드

>>> a = (38, 21, 53, 62, 19, 53)
>>> a.index(53)
2

a.index(53)은 38, 21, 53, 62, 19, 53 중에서 53dl 세 번째에 있기 때문에

인덱스 2가 나오게 된다!! (0부터시작하기 때문에 세번째이다.)

 

 

튜플에서 특정 값의 개수 구하기 count 메서드

>>> a = (10, 20, 30, 15, 20, 40)
>>> a.count(20)
2

a.count(20)은 10, 20, 30, 15, 20, 40에서 20의 개수를 구한다.

20은 2개가 들어 있다. 그러므로 2가 나온다!!

 

 

튜플에서 for 반복문으로 요소 출력하기

>>> a = (38, 21, 53, 62, 19)
>>> for i in a:
...     print(i, end=' ')
...
38 21 53 62 19

for 반복문을 사용해서

i를 출력할때 end ' ' 로 띄어쓰기하여 출력한다.

 

 

튜플에서 표현식 사용하기 tuple

>>> a = tuple(i for i in range(10) if i % 2 == 0)
>>> a
(0, 2, 4, 6, 8)

tuple(식 for 변수 in 리스트 if 조건식) 을 사용해서

tuple 안에 for 반복문과 if 조건문을 지정합니다.

 

 

이번 공부는 다시 해봐야겠다. 음 이렇구나 라고 넘어 갔지만 

뒤돌아서면 까먹을꺼 같다!!

728x90
728x90

저번 1부에서는 추가하는 기능을 배웠다.

 

이번에는 삭제하는 기능을 배워보자

 

리스트에서 요소를 삭제하는 방법은 2가지 메서드가 있다.

  • pop : 마지막 요소 또는 특정 인덱스의 요소를 삭제
  • remove : 특정 값을 찾아서 삭제

첫 번째로 삭제하는 pop 메서드이다.

>>> a = [18, 28, 38]
>>> a.pop()
38
>>> a
[18, 28]

a.pop()를 사용하면 리스트의 마지막 요소를 삭제한다.

결과 [18, 28] 요소만 남게 되었다.

 

 

두 번째로 삭제하는 remove 메서드이다.

>>> a = [18, 28, 38]
>>> a.remove(28)
>>> a
[18, 38]

>>> a = [18, 28, 38, 18]
>>> a.remove(18)
>>> a
[28, 38, 18]

먼저 골라서 특정 값을 찾아 삭제하는 remove()는 값만 ()에 넣어주면

요소를 삭제할 수 있다. 

그리고 리스트에서 같은 값이 있다면 처음 찾는 값을 삭제한다.


추가적으로 리스트에 조작 기능을 보자

 

순서를 뒤집는 reverse 메서드

>>> a = [10, 20, 30, 15, 20, 40]
>>> a.reverse()
>>> a
[40, 20, 15, 30, 20, 10]

 

리스트 요소를 정렬하는 sort 메서드

>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort()
>>> a
[10, 15, 20, 20, 30, 40]

 

리스트의 모든 요소 삭제 clear 메서드

>>> a = [10, 20, 30]
>>> a.clear()
>>> a
[]
728x90
728x90

우리는 리스트와 튜플에 기본적이 사용 방법을 배웠다.

 

이번에는 조금? 깊게 들어가서 리스트와 튜플에 요소를 추가하는 방법을 배워보자.

 

리스트에 요소를 추가하는 메서드는 3가지가 있다.

  • append : 요소 하나를 추가
  • extend : 리스트를 연결하여 확장
  • insert : 특정 인덱스에 요소 추가

 

첫 번째로 append 메서드이다.

>>> a = [18, 28, 38]
>>> a.append(48)
>>> a
[18, 28, 38, 48]
>>> len(a)
4

+ 리스트 안에 리스트를 넣을 수 있다.

>>> a = [18, 28, 38]
>>> a.append([48,58])
>>> a
[18, 28, 38, [48, 58]]
>>> len(a)
4

이때, 리스트 길이를 구해보면 5가 아닌 4가 나온다. [48, 58]은 요소 하나로 보기 때문이다.

 

 

두 번째로 extend 메서드이다.

>>> a = [18, 28, 38]
>>> a.extend([48, 58])
>>> a
[18, 28, 38, 48, 58]
>>> len(a)
4

append와 변화를 눈치챗는가? 모르겠다면 코드를 다시 보자!

a.extend([48, 58]) 을 append는 요소 하나로 보았다. 하지만

extend는 요소를 구분해서 추가했다. 바로 이런 차이가 있다.

 

 

세 번쨰로 insert 메서트 이다.

>>> a = [18, 28, 38]
>>> a.insert(2, 48)
>>> a
[18, 28, 48, 38]
>>> len(a)
4

이제 감이 올것이다!

a.insert(2, 48) 인덱스 2에 48을 추가하겠다! 라는 뜻이다.

그래서 [18, 28, 48, 38] 이라는 결과가 나왔다.

+

a.insert(len(a), 58)

이렇게 사용하면 끝에 58이 추가된다! 

 

728x90
728x90

지금까지 딱딱한 문자, 숫자만 출력을 해서 

 

아 이게 코딩에 미학인가 싶을 것이다. 

 

아니다.

 

웹 페이지, 디자인, 다양한 결과물을 만들 수 있는게 코딩이다. 

 

오늘은 스핀오프로 터틀 그래픽스를 간단하게 다루어보자!

 

기본적인 사각형을 그릴 수 있는 코드이다.

과연 이게 무엇일까?

거북이가 나와서 이동경로에 따라 그림을 그리게 된다.

 

t.fd( ) 앞으로 이동하는 코드이다.

t.rt( ) 오른쪽으로 회전하는 코드이다.

 

 

그렇다면 네모 세상에만 있을게 아니라 도 그려보자!

 

기본적인 원은 t.circle( )를 사용하면 ( )안에 숫자만큼 반지름을 가진 원을 얻을 수있다.

t.circle(50)

 

예술적인 감각을 높여서 다양한 원을 겹쳐서 만들어보자!

for 반복문을 추가하였다.

어렵게 보지 말자 쉽다. 코드를 한 줄씩 보면

  • n = 30 원을 총 몇번 그릴 것 인지 정한다.
  • fot i in range(n) 반복을 몇번? n번 하겠다.
  • t.circle(50) 30번 반복하는 원에 반지름은 50이다.
  • t.right(360 / n) 오른쪽으로 360/30=12번 회전 하겠다.

 

메서드

설명

메서드

설명

shape('모양')

shape()

터틀 모양 지정(arrow, turtle, circle, square, triangle, classic)

현재 모양 확인

mainloop()

터틀 창 유지

forward(거리)

fd(거리)

앞으로 이동

backward(거리)

bk(거리)

back(거리)

뒤로 이동

left(각도)

lt(각도)

왼쪽으로 회전

right(각도)

rt(각도)

오른쪽으로 회전

color('색')

팬의 색 지정

circle(반지름)

원 그리기

begin_fill()

색칠할 영역 시작

end_fill()

색칠할 영역 끝

speed('속도')

speed()

거북이 속도 설정

거북이 속도 확인

 

 

 

 

재미있다. 조금 신기했다!

 

이렇게 우리는 딱딱한 코드만 짜고 있지 않다는걸 느낄 수 있다. 

지금은 어렵게 느껴지겠지만, 하나씩 따라서 코드를 쳐보고 결과를 보자

오류가 난다면 고쳐보자 

 

우리 인생도 똑같다.

728x90
728x90

지난 시간을 보면 반복문, 조건문, 연산자, 비교 연산자 등등 파이썬에 대해 벌써 많이 배워왔다.

 

이제 모두를 사용해서 풀 수 있는 문제를 풀어 보자!

 

1. 1부터 50까지 숫자를  출력해보자

숫자가 많아서 짤렸다. (중간 생략)

 

2. 4의 배수와 7의 배수일 때 숫자 대신 'Team', 'H4C'를 출력해보자!

 

3. 4와 7의 공배수를 출력해보자!

7line print('H4C')이다... 수정이 귀찮았던 걸까?

 

 

4. 코드 단축해보기

와...

 어떻...게 이렇게 쉽게 코드가 나올 수 있나..

 

약간 허무하다!

 

하지만 이제 코드를 짤때는 필요한 코드로 효율적인 코딩을 하는 버릇이 좋다고 한다! 아직 나도 그정도 레벨은 아니라서 잘은 모르겠다 ㅎㅅㅎ

 

한 줄씩 설명을 해보자면

for 반복문으로 1부터 50까지 반복하며, i % 4 == 0이 True 이면 Team을 출력하고, 아니라면 i를 출력(or이기 때문에)

i % 7 == 0이 True라면 H4C를 출력, False이므로 i를 출력(or이기 때문에) 둘다 트루(4와7의 공배수)라면 Team+H4C이므로 TeamH4C 출력 이라는 설명이다. 

 

정말 어렵지 않다. 한 줄씩 이해하면서 넘어가보자 혹시 이해가 안간다면 모르는 문법에 찾아가 다시 공부해보자

 

이게 삽질 공부에 시작이다. 

728x90
728x90

저번 시간에 이어서 중첩루프에 대해서 공부해보자!

 

for i in range(5):          # 5번 반복. 바깥쪽 루프는 세로 방향
    for j in range(5):      # 5번 반복. 안쪽 루프는 가로 방향
        print('j:', j, sep='', end=' ')    # j값 출력. end에 ' '를 지정하여 줄바꿈 대신 한 칸 띄움
    print('i:', i, '\\n', sep='')    # i값 출력, 개행 문자 모양도 출력
                                     # 가로 방향으로 숫자를 모두 출력한 뒤 다음 줄로 넘어감
                                     # (print는 기본적으로 출력 후 다음 줄로 넘어감)

코드를 실행하면 이런 결과를 볼 수 있다.

쉽게 쉽게 이해하는 시간을 가져보자

i를 5번 반복해서 안쪽 루프를 만드는 것이다. 

그리고 반복에 반복을 넣어서 바깥쪽 루프를 만들면,

바깥쪽 루프도 5번 반복하는 개념이다.

 

이제 이해가 안가는 부분은 정확하게 sep='', end=' ' 부분이다. 

하나씩 넘어가보자, end로 줄바꿈을 하지 않고 ' ' 한 칸 띄움을 사용하는 것이다.

 

어렵지 않다. 한문장씩 이해하면서 지난시간에 배운 내용을 접목하면 쉽다!!

 

응용을해서 사각형 형태 별을 그려보자!!


우리는 for 반복문if 조건문을 배웠다.

 

이를 이용해서 문제에서 주어진 계단식으로 별(*)을 출력해보자!

*
**
***
****
*****
******

 

이렇게 우리는 조금만 응용하면, 결과를 만들 수 있다. 

 

728x90

'프로그래밍 > 파이썬 기본문법' 카테고리의 다른 글

UNIT21. 터틀 그래픽스로 그림 그리기  (0) 2021.01.26
UNIT20. 문제 풀이  (0) 2021.01.26
내가 파이썬을 공부하며 느낀점  (0) 2021.01.25
UNIT18. break, continue  (0) 2021.01.24
UNIT17. while 반복문  (0) 2021.01.24
728x90

2019년,,보안 공부를 시작하면서 

 

유튜브, 책, 선배 조언 등을 참고하며 공부를 시작했다.

 

아마 IT 공부를 하는 사람이라면 기본적으로 구글링부터 시작할 것이다.

 

구글링을 하면 공부를 하는 방법, 코딩 공부하는 방법, 해킹하는 방법, 해킹 대회 등등

 

다양한 정보를 얻을 수 있다.

 

정보를 많이 아는것, 이게 중요하긴 하다. 쉽게 코딩을 하는 방법을 알려주는 강의가 있다면 이해가 빠를 수 밖에 없기때문이다.

또 IT는 빠르게 트렌드가 변하고 있다는 이유 때문에 정보를 많이 알고 있는게 중요하긴하다.

 

하.지.만

 

많은 정보를 안다고 그게 내 실력이 아니다.

 

- 헬스를 예로 들어보자 우리가 시간을 가지고 꾸준히 매일 100일 동안 하루 1시간씩 운동한다면

 

변화가 찾아온다.

 

하지만 모두가 다 똑같은 변화가 찾아 오지는 않는다.

 

어떤 유튜버를 보고 운동을 따라하는지, 트레이너한테 운동을 배웠는지, 책을 보고 따라했는지 등등

 

다양한 방법으로 각자 같은 시간을 사용해도 다른 결과를 보여준다.

 

정보는 다양하고 많지만, 공통적으로 필수적인 요소는 바로 꾸준함이다.

 

꾸준함이 없다면 정보가 많아도 그냥 정보로 남는다. 내것으로 만들기 위함은

 

꾸준함이 필수이다. 외국어, 운동, 공부, 요리 등 모든 우리가 이루고자 하는 요소에는 필연적이다.

 

정리를 해보면

 

꾸준함(노력) + 정보(방법)이 만났을때 비로소 좋은 결과를 만들 수 있다는 공식이다.

 

정보만 가지고 있다고 결과를 만들 수 없다.

 

매일 실천하고 직접 생각하며 고민하고 문제를 해결하는 과정에서 우린 

 

본인의 기술, 실력을 가지게 된다. 

 

많이 알고 있는것과 내가 할 수 있는것은 분명하게 차이가 있다는 것을 기억하자!!

 

 

 

 

728x90

'프로그래밍 > 파이썬 기본문법' 카테고리의 다른 글

UNIT20. 문제 풀이  (0) 2021.01.26
UNIT19. 반복문으로 계단식 별 출력하기  (0) 2021.01.25
UNIT18. break, continue  (0) 2021.01.24
UNIT17. while 반복문  (0) 2021.01.24
UNIT16. for 반복문  (0) 2021.01.24
728x90

while에 대해서 열심히 공부했다면, 

 

의문점이 생길 것이다. 만약 계속 무한루프를 도는

 

코드라면 어떻게 탈출해야 할까?(ctrl+c)

 

코드를 짜면서 고민을 먼저 해보는 것이 중요하다. 무한루프에 빠진다면 계속해서 컴퓨터는 열일을 할 것 이다.

 

break으로 끝내기!

이렇게 중간에 if 조건문break를 넣어 조건식이 맞을 경우 반복문을 끝낼 수 있다.

 

 

 

for 반복문에서 break로 끝낼 수 있다.


같은 방식으로 continue를 사용해서 코드 실행을 건너뛸 수 있다.

728x90

'프로그래밍 > 파이썬 기본문법' 카테고리의 다른 글

UNIT19. 반복문으로 계단식 별 출력하기  (0) 2021.01.25
내가 파이썬을 공부하며 느낀점  (0) 2021.01.25
UNIT17. while 반복문  (0) 2021.01.24
UNIT16. for 반복문  (0) 2021.01.24
UNIT15. elif  (0) 2021.01.24

+ Recent posts