마크다운

마크다운?

  • 일반 텍스트로 서식이 있는 문서를 작성하는 언어
  • 문서를 읽기 쉽고, 배우기 쉬운 도구
  • 사이트에서 간단하게 마크다운을 확인할 수 있음
  • 제목, 강조, 구분선, 인용글 등 다양한 문법이 존재
  • 아이콘이 존재해서 글을 쉽게 꾸밀 수 있음
  • 마크다운의 문법이 어디까지 지원되는지 문서가 존재
# 제목1
## 제목2
### 제목3

본문
엔터가 적용 안됩니다.

본문  
엔터가 적용 됩니다.
![img](test)

---
* 1 점
- 2 점
	* 3점

1. 순서1
1. 순서2
1. 순서3

문자열 & 반복문

문자열 처리

# 합치기(join)
'hi'.join(['hi', 'py'])
# 나누기(split)
'hi,py'.split(',')
# 깎아내기(strip) + l & r
'123231hi,py312321'.strip('123') # 복수개 & 순서 무시 삭제 가능
'123231hi,py312321'.lstrip('123') # 왼쪽(left)
'123231hi,py312321'.rstrip('123') # 오른쪽(right)
# 변경하기(replace)
'hi,py'.replace(',', '!')

# 합 연산
'hi,py' + 'hi,py'
# 곱 연산
'hi,py' * 3

# indexing
'hi,py'[3]
# slicing
'hi,py'[1:3]

# 연속 문자열
'''
문자열
'''

문자열 포맷팅(formatting)

# 정수 출력
a = 1
print('%d' % a)
# 실수 출력
b = 1.1
print('%.3f' % b)
# 문자열로 출력
print('%s %s'%(a, b))

# 위와 동일
print(f'{a}')
print(f'{b:.3f}')
print(f'{a} {b}')

# 정렬
x = 1
print(f'x : {x}')
x = '1'
print(f'x : {x:.^10}') # > ^ <
x = 1.0
print(f'x : {x:10.4f}')

Range

start = 1
end = 7
step = 1
range(start, end, step) # 시작, 종료, 스텝으로 숫자를 나열함
range(3) # 0 이상, 3 미만 값 1 칸씩 뛰며 나열
range(1, 3) # 1 이상, 3 미만 값 1 칸씩 뛰며 나열
range(1, 3, 2) # 1 이상, 3 미만 값 2 칸씩 뛰며 나열
range(3, 1, -2) # 3 이하, 1 초과 값 -2 칸씩 뛰며 나열(역순 가능)

반복문

print(1, end = ' ')
print(2, end = ' ')
print(3)

# 위와 동일 결과
for i in range(3):
	  print(i + 1, end = ' ')
print()

# set 가능
for i in {0, 1, 2}:
    print(i)

# tuple 가능
for i in (0, 1, 2):
    print(i)

# 문자열 가능
for i in '012':
    print(i)

# 리스트안에 요소 고려 X
for i in [1, 1.0, '1', True]:
    print(i)
for[반복하겠다!] i[변수를 넣어라!] in[어디에서 가져오겠다] range(3)[0 ~ 2 까지 순서대로]:[끝!]
    [들여쓰기를 한다!]print(i + 1, end = ' ')[출력해라]

즉,
반복하겠다, 변수를 넣어라, 어디에서 가져오겠다 0 ~ 4 까지 순서대로 : 끝!
    들여쓰기를 하고 출력해라라

개행문자(Escape Sequence)

print

print('안 녕')
print('안 ', end='녕')
print('안', '녕', seq=' ')

실습

문자열

01 indexing & slicing

# 위 문자열의 163번째 글자를 찾자
text[162]
# 동일 문자열의 뒤에서 200번째까지 글자를 표시하자
text[-200:]

02 split & join & replace

# 동일 문자열을 공백을 기준으로 나눠보자
texts = text.split()
# 공백 구분자로 나눈 문자열을 합쳐보자
text = texts.join(' ')
# 합친 문자열에서 소문자 l을 대문자 L로 변경해보자
text.replace('l', 'L')

03 reversed & count

# 문자열을 뒤집자
text[::-1]
# 문자열에서 a를 세자
text.count('a')

04 자연어를 토대로 문제 풀기

# 문장을 띄어쓰기를 기준으로 나누고, 나누어진 단어들의 맨 앞과 맨 뒤 단어를 o를 기준으로 나눈다.
texts = text.split()
texts[0].split('o'), texts[-1].split('o')

# 1500 기준으로 나누고, 각각 문장에 Lbokr 중 하나 이상 해당하는 영문자를 좌우끝에서 부터 제거한다.
texts = text.split('1500')
for text in texts:
	  text.split('Lbokr')

05 strip과 lstrip의 차이

# 문자열에서 'Lorem Ipsum'에 해당하는 문자들을 strip 함수로 지운다
text.strip('Lorem Ipsum')
# 문자열에서 'Lorem Ipsum'에 해당하는 문자들을 왼쪽 끝부분만 지운다
text.lstrip('Lorem Ipsum')

06 문장을 한줄로 출력

text = '''반복문을 이용하면
여러 줄의 출력도
하나의 프린트문으로 출력할 수
있습니다.'''

# 가로로 한줄씩 출력
for tmp in text.split('\n'):
    print(tmp)

# 새로로 한줄씩 출력
texts = text.split('\n')

# 빈칸 만들기
data = [''] * len(max(texts))

# 택스트 만큼 빈칸 만들기
for i in range(len(texts)):
		# 한 줄에 최대 글자 수 만큼 반복
		for j in range(len(max(texts))):
				# 출력할 줄이 남았다면
       if j < len(texts[i]):
            if texts[i][j] != ' ':
                data[j] += texts[i][j]# 출력
            if texts[i][j] == ' ':
                data[j] += '  ' # 스페이스면 2번 출력
        else:
            data[j] += '  ' # 빈칸 출력

07 과제

text = '오늘은\t문자열을\t배웠고,\t그\t지식을\t이용해\t문자열\t수정을\t해\t봅시다\n'
# 위 문장에서 개행문자를 제거하라
text.replace('\t',' ').replace('\n',' ')
# 동일 문장에서 개행문자를 %로 변경하라
text.replace('\t','%').replace('\n','%')

# ','를 기준으로 문장을 나눠라
print(text.split(',')[0])
print(text.split(',')[1])
# ','를 개행문자로 변경해라
print(text.replace(',','\n'))

range, 반복문

01 4의 배수

for i in range(4,100,4):
    print(i)

for i in range(1,25):
    print(i*4)

02 별찍기

n = 5

for i in range(n):
  print('★' * (n - 1 - i) + '☆' * (1 + i))

03 짝홀

for i in [2,6,8,9,1,0]:
  if i % 2 == 0:
    print('짝수')
  if i % 2 == 1:
    print('홀수')

04 팩토리얼

num = 5
result = 1

msg = ''

for i in range(num, 0, -1):
  msg += str(i) + ' * '

  print(f'{result} * {i} = {result * i}')
  
  result *= i  

print(msg[:-3], '=', result)

05 소수점 range

for i in range(20, -1, -1):
  print(i / 2)

06 짝홀 크로스

num = 8

for i in range(0, num):
  if i < num / 2:
    print('\t' * i, i * 2, sep = '', end='')
    print('\t' * (num - i * 2 - 1), i * 2 + 1, sep = '')
  else:
    print('\t' * (num - i - 1), i * 2 + 1, sep = '', end='')
    print('\t' * (i * 2 - num + 1), i * 2, sep = '')
# for i in range(1, 10, 2):/

07 3의 배수

range(3, 100, 3)

# + 2의 배수
range(6, 100, 6)

복합

01 반복문을 돌면서, 문자는 출력 숫자는 10 곱해서 출력

for i in ['10',9,'8',7,'6',5,'4',3,'2',1]:
    if type(i) == str:
        print(i)
    else:
        print(i*10)

02 다중 조건

x = 400

if x > 500:
    print(x,'는 500 초과입니다')
elif x > 300:
    print(x,'는 301~500 입니다')
else:
    print(x,'는 300 이하입니다')

회고

  • 마크다운에 아이콘이 존재하는 것을 몰랐는데, 이번 기회에 작성에 사용하면 좋을 것 같다.
  • 문자열의 strip이 순서를 고려하는 줄 알았는데, 아니었다!
  • 개행문자의 다양한 종류가 있지만, 실제로 사용하는 것은 일부인 것 같다.
  • Lorem Ipsum의 존재는 알았지만, python package가 존재하는 것은 처음 알았다.
  • 다양한 실습 문제를 통해, 스스로 문제를 어떻게 파악하는지 알게 되었다.
  • 추가로 한 가지 방법이 아닌 타인의 풀이는 보는 것에서 많은 가능성을 보았다.

Ref

profile
DA DE DS

0개의 댓글