# 1. Language/🌊 Python

TIL # Python 이론정리

둥굴둥굴둥굴레차 2021. 2. 16. 10:06

String

문자열은 + 연산자로 이어붙이고, * 연산자로 반복시킬 수 있습니다.

'hi' * 10
# 'hihihihihihihihihihi'
'hi' + 'hong'
# 'hihong'

당연히 변수화해서도 사용가능합니다.

a = 'hi'
b = ', hong'
a + b
# 'hihong'

end

print의 기본은 ,end='\n'이지만 아래와 같이 사용할 수도 있다.

print('내용을 띄워서 출력하고 싶으면?', end=' ')
print('옆으로 띄워짐')
# 내용을 띄워서 출력하고 싶으면? 옆으로 띄워짐

print('개행 문자 말고도 가능합니다', end='!')
print('진짜로', end='!')
print('알고보면 print는 기본이 \\n', end='!')
# 개행 문자 말고도 가능합니다!진짜로!알고보면 print는 기본이 \n!

sep

거의 모든 상황에 적용이 되나, list에 들어있는 1개의 문자에 대해선 작동 X

print의 기본은 ,sep=' '이지만 아래와 같이 사용할 수도 있다.

## 일반 문자열
print('S','E','P')
# S E P

print('S','E','P', sep=' ')
# S E P

print('S','E','P', sep='')
# SEP

# 특정문자로 구분하여 붙여주기
print('S','E','P', sep='@')
# S@E@P

print('S','E','P', sep=' @')
# S @E @P

# 붙어있는 문자열을 sep해주고 싶다면 * 필수!!
print(*'SEP', sep='@')
# # S@E@P
## 리스트 안에 들어있는 문자열
## *를 반드시 붙여주자!!
a = ['S', 'E', 'P']
print(*a, sep='@')
# S@E@P

a = ['S', 'E', 'P']
print(*a, sep='')
# SEP

join

모든 상황에 대해 적용이 가능! 이걸 외우자.

반복가능한(iterable) 컨테이너의 요소의 separator를 구분자로 합쳐(join()) 문자열로 반환

sep 과 join

## 여러개의 문자열
a = '배', '고', '파'
print(*a, sep='!')
print('!'.join(a))
# 배!고!파
# 배!고!파

## 한 개의 문자
a = '배고파'
print(*a, sep='!')
print('!'.join(a))
# 배!고!파
# 배!고!파

## 리스트 안에 들어있는 여러개의 문자열
a = ['배', '고', '파']
print(*a, sep='!')
print('!'.join(a))
# 배!고!파
# 배!고!파

## 리스트 안에 들어있는 한 개의 문자 (sep사용 주의!)
a = ['배고파']
print(*a, sep='!')
print('!'.join(*a))
#배고파 #####주의!!######
#배!고!파

##결론##
머리아프게 이러지 말고 join만 씁시다!
`*` 빼먹지 말고 :-)

String Interpolation

  • %-formatting
  • str.format()
  • f-string
  • %d : 정수
  • %f : 실수
  • %s : 문자열

 

# %-formatting
name = 'Kim'
score = 4.5

print('Hello, %s' % name)
print('내 성적은 %d' % score)
print('내 성적은 %f' % score)
# Hello, Kim
# 내 성적은 4
# 내 성적은 4.500000
# str.format()
name = 'Kim'
score = 4.5

print('Hello, {}. 내 성적은 {}'.format(name, score))
# Hello, Kim. 내 성적은 4.5
# f-string
name = 'Kim'
score = 4.5

print(f'Hello, {name}. 내 성적은 {score}. {score}지롱!')
# Hello, Kim. 내 성적은 4.5. 4.5지롱!

산술연산자

  • 사칙연산
  • / : 나눗셈
  • // : 몫
  • % : 나머지
  • ** : 거듭제곱

/ 나눗셈

항상 float를 반환!

정수 나눗셈으로 정수 결과값을 얻으려면

  1. int로 형변환을 해주거나
  2. //연산자를 사용하기
print(5 / 2)
print(4/2)
print(5 // 2)
print(int(5 / 2))
print(5 % 2)
# 2.5
# 2.0
# 2
# 2
# 1

논리연산자

in연산자를 통해 str요소가 속해있는지 확인 가능

vowels = 'aeiou'

print('a' in vowels)
print(('a' and 'b') in voels)
print(('a' and 'e') in vowels)
print(('a' or 'b') in vowels)
# True
# False
# True
# True

print('a' in 'apple')
# True

 

이는 list에서도 적용 가능

print(1 in [1, 2, 3])
# True

hi=[9, 8, 7]
print(9 in hi)
# True

Slicing

[:]를 통해 str과 list를 슬라이싱 가능

a = 'samsung'
print(a[0:3])
# sam

b = [1, 2, 3]
print(b[0:1])
# 1

기타

Concatenation

숫자가 아닌 자료형은 + 연산자를 통해 합칠 수 있습니다.

숫자는 값이 그대로 합쳐지는 것이 아니라 서로 더해져버린다.

  1. 문자열을 + 연산자로 더할 수 있다.
  2. 리스트를 + 연산자로 더할 수 있다.
# 문자열 +
print('abc' + 'efg')
# 'abcefg'

# list +
print([1, 2, 3] + [4, 5, 6])
# [1, 2, 3, 4, 5, 6]

조건 표현식 (삼항 연산자)

  1. [expression for 변수 in iterable if 조건식]
  2. [expression if 조건식 else 식 for 변수 in iterable]

[주의]

[expression for 변수 in iterable if 조건식 else 식 ] 와 같이 else가 제일 뒤로 올 수 없다!

# print문 활용
num = int(input('숫자를 입력하세요 : '))

print('0 보다 큼') if num > 0 else print('0 보다 크지않음')
## 변수 활용
num = int(input('숫자를 입력하세요 : ')) # -5
value = num if num >= 0 else -num
print(value) # 5

# 만약 리스트 안에 넣어 출력하고 싶다면
num = int(input('숫자를 입력하세요 : ')) # -5
value = [num if num >= 0 else -num]
print(value) # [5]
## list 삼항연산자
[i for i in range(1, 11) if i % 2 == 0]
# [2, 4, 6, 8, 10]

['홀수' if i % 2 == 1 else '짝수' for i in range(1, 11)]
# ['홀수', '짝수', '홀수', '짝수', '홀수', '짝수', '홀수', '짝수', '홀수', '짝수']

While 문

조건식이 참(True)인 경우 반복적으로 코드를 실행

while <조건식>:
    <코드 블럭>

# True를 활용한 while문
while True:
    print('조건식이 참일 때까지')
    print('계속 반복')

# 조건을 활용한 while문
x=0
cnt=0
while x<3:
    x+=1
    cnt+=1
print(cnt) # 3

range

숫자의 시퀀스를 나타내기 위해 사용

기본형 : range(n)

0부터 n-1까지 값을 가짐

범위 지정 : range(n, m)

n부터 m-1까지 값을 가짐

범위 및 스텝 지정 : range(n, m, s)

n부터 m-1까지 +s만큼 증가한다

# 1 ~ 10까지의 숫자를 담은 range를 만들어봅시다.
print(list(range(1, 11)))
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

# 0부터 -10까지의 숫자를 담은 range를 만들어봅시다.
print(list(range(0, -11, -1)))
# [0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10]

# 0부터 10까지의 숫자를 2씩 증가시킨 리스트로 만들어봅시다.
print(list(range(0, 11, 2)))
# [0, 2, 4, 6, 8, 10]

round

round() 는 0~4는 내림, 5는 반올림

round(x,y) : y를 사용하여 몇 번째 자리까지 표현할지 정할 수 있음

round(3.5-3.12)
# 0
round(3.5-3.12, 1)
# 0.4
round(3.5-3.12, 2)
# 0.38

[참고]

3.5-3.12 == 0.38 은 False다.