Python_1. 자료형, 연산자, 문자열 처리

drrobot409·2021년 5월 28일
0

Python

목록 보기
1/10

Python

  • 인프런의 파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자 강의 내용 정리

자료형

  • 파이썬의 자료형에는 여러가지가 있다.

    • 숫자 자료형

    • 문자열 자료형

    • boolean 자료형

    • 그 외 등등

  • 이 중 가장 기본적인 3가지, 숫자, 문자열, boolean에 대해서 알아보았다.

숫자 자료형

  • 숫자 자료형은 말 그대로 1, 2, 10, 50, 100, -1000 등과 같은 숫자를 의미한다.
  • 숫자 자료형은 서로 연산이 가능하다.
print(6) # 6
print(-5) # -5
print(5+1) # 6
print(5*3) # 15
print(3*(1+5)) # 18
print(2**3) # 제곱, 8
print(19%6) # 나머지 구하기, 1
print(19//6) # 몫 구하기, 3

문자열 자료형

  • 문자열 자료형은 한글, 알파벳 등과 같은 문자를 의미한다. (ex : 안녕하세요, apple, !, ? 등)
  • 따옴표("", '')로 감싸서 입력한다.
  • 숫자 자료형과의 연산을 통해 출력 횟수 등을 지정할 수 있다.
print("Hi") # Hi
print("안녕") # 안녕
print("안녕"*5) # 안녕안녕안녕안녕안녕
print("안녕"+"Hi") # 안녕Hi

# 문자열 자료형과 숫자 자료형을 +로 붙이는 것은 불가능하다.
print("안녕" + 5) # error

# 이 경우 숫자의 자료형을 문자열로 변경하여 둘을 이어붙일 수 있다.
print("안녕" + str(5)) # 안녕5

# 따옴표 3개를 붙여서 여러줄의 문자열도 출력이 가능하다.
print('''
안녕하세요,
반갑습니다.
''')
#안녕하세요,
#반갑습니다.

boolean 자료형

  • boolean 자료형은 True와 False로 이루어진다.
  • 등식과 not, and, or 등을 활용하여 표현이 가능하며, 식이 참일 경우 True, 거짓일 경우 False를 출력한다.
# True와 False를 직접 입력할 경우 첫글자는 반드시 대문자로 입력해야 한다.
print(True) # True
print(False) # False
print(5 > 10) # False
print(5 < 10) # True
# not은 반대의 경우를 출력한다.
print(not True) # False
print(not False) # True
print(not 5 > 10) # True
# and(&)는 두 개의 식이 모두 참일 경우만 True를 출력한다.
print(3 + 4 == 7 and 3 + 5 == 8) # True
print(3 + 3 == 7 & 3 + 5 == 6) # False
# or은 두 개의 식 중 하나 이상이 참일 경우 True를 출력한다.
print(3 + 4 == 7 or 3 + 5 == 5) # True
print(3 + 4 == 6 or 3 + 5 == 5) # False

변수

  • 변수는 사용이 편리하도록 원하는 값을 원하는 이름으로 저장하는 것을 말한다.

예시

  • 내 친구는 짬뽕을 좋아하고 짬뽕은 6000원이다.
print("내 친구는 짬뽕을 좋아한다. 짬뽕은 6000원이다.")
  • 내 친구가 좋아하는 음식이 볶음밥으로 바뀌었고 볶음밥은 5000원일 경우 문자열을 일일히 교체해줘야 한다. 상당히 번거롭다.
print("내 친구는 볶음밥을 좋아한다. 볶음밥은 5000원이다.")
  • 처음에 변수를 사용했다면 간단하게 문장을 바꿀 수 있다.
food = "짬뽕"
price = 6000
print("내 친구는 " + food + "을 좋아한다. " + food + "은 " + str(price) + "원이다.")
#내 친구는 짬뽕을 좋아한다. 짬뽕은 6000원이다.
# 변수 수정 후 재출력.
food = "볶음밥"
price = 5000
print("내 친구는 " + food + "을 좋아한다. " + food + "은 " + str(price) + "원이다.")
# 내 친구는 볶음밥을 좋아한다. 볶음밥은 5000원이다.
  • 숫자 자료형과 수식 등도 변수에 사용이 가능하다.
num = 1 + 2 # num = 3
num = num + 2 # num(3) + 2 = 5
num += 5 # num = num + 5와 같은 의미, num(5) + 5 = 10
num *= 2 # num = num * 2와 같은 의미, num(10) * 2 = 20

숫자 처리 함수

  • 숫자 자료형에 사용이 가능한 함수에는 abs, pow, max, min, round 등이 있다.
# 절대값
print(abs(-5)) # 5
# 제곱
print(pow(4, 2)) # 16
# 최대값
print(max(5, 12)) # 12
# 최솟값
print(min(5, 12)) # 5
# 반올림
print(round(3.33)) # 3
print(round(5.5)) # 6
  • math 모듈을 불러옴으로써 추가적인 함수 또한 사용이 가능하다.
from math import *
print(floor(4.99)) # 내림, 4
print(ceil(4.44)) # 올림, 5
print(sqrt(16)) # 제곱근, 4

랜덤

  • 랜덤 모듈을 이용하여 범위 내의 랜덤값을 출력할 수 있다.
from random import *
print(random()) # 0 ~ 1.0 사이의 랜덤값
print(random() * 10) # 0 ~ 10.0 사이의 랜덤값
print(int(random() * 10)) # 0 ~ 10 사이의 랜덤 정수값
print(int(random() * 10) + 1) # 1 ~ 10 사이의 랜덤 정수값
print(int(random() * 45) + 1) 1 ~ 45 사이의 랜덤 정수값

# randrange와 randint를 통해 조금 더 간단하게 표현이 가능하다.
print(randrange(1, 46)) # 1 이상 46 미만의 랜덤 정수값
print(randint(1, 45)) # 1 이상 45 이하의 랜덤 정수값

슬라이싱

  • 슬라이싱을 통해 범위를 지정하여 원하는 부분만 출력할 수 있다.
  • 제일 좌측부터 0으로 시작하는 index 번호를 통해 범위를 지정할 수 있으며, 끝나는 부분의 index는 포함하지 않는다.
num = "987654.123"

print(num[0]) # 변수 num에서 0번째 위치에 있는 문자 출력 => 9
print(num[3]) # 변수 num에서 3번째 위치에 있는 문자 출력 => 6
print(num[6]) # 변수 num에서 6번째 위치에 있는 문자 출력 => .
print(num[3:6]) # 변수 num에서 3번째 위치에서 5번째 위치까지 출력 => 654
print(num[:6]) # 앞 인덱스를 비워둘 경우 처음부터를 의미함. => 987654
print(num[6:]) # 뒤 인덱스를 비워둘 경우 마지막까지를 의미함. => .123
print(num[:]) # 인덱스를 모두 비울 경우 전체를 의미함 => 987654.123

# 앞의 인덱스를 음수로 설정시 맨 뒤부터 몇번째까지 가져오는지를 의미함 
# 맨 뒤의 문자의 index는 -1이다.
print(num[-1:]) # 뒤에서부터 1번째 문자 출력 => 3
print(num[-5:]) # 뒤에서부터 5번째 문자까지 출력 => 4.123

문자열 처리 함수

  • 앞에 나온 숫자 처리 함수와 마찬가지로 문자열을 처리하는 함수 또한 다양하다.
문장 = "Hi, my name is Python"

print(문장.lower()) # 문자열을 모두 소문자로 변경
print(문장.upper()) # 문자열을 모두 대문자로 변경
print(문장[0].isupper()) # 인덱스 위치([0])가 대문자인지 확인, True
print(len(문장)) # 문자열의 길이, 21
print(문장.count("n")) # 해당 문자열이 몇 번 등장하는지

# 문자열 대체
print(문장.replace("Python", "James")) # Hi, my name is James

# 찾는 문자열이 나오는 인덱스 확인
print(문장.index("n"))
print(문장.find("n"))

# 찾는 문자열이 존재하지 않는 경우
print(문장.find("x")) # 존재하지 않는 문자열일 경우 -1을 출력
print(문장.index("x")) # 존재하지 않는 문자열일 경우 에러 출력
## 에러가 뜨면 코드의 실행이 중단된다.
### .find의 경우 문자열이 존재하지 않는다면 -1을 출력하고 다음 코드를 실행하지만,
### .index의 경우 문자열이 존재하지 않는다면 에러를 출력하고 다음 코드가 남아있더라도 실행이 중단된다.

문자열 포맷

  • 다양한 문자열 포맷을 활용하여 보다 간편하게 문자열을 출력할 수 있다.
# %d는 정수를 의미한다. 
print("짬뽕은 %d원이다." % 6000) # 짬뽕은 6000원이다.

# %s는 문자열을 의미한다.
print("%s는 6000원이다." % "짬뽕") # 짬뽕은 6000원이다.

# %d는 %s로 대체할 수 있다.
print("짬뽕은 %s원이다." % 6000) # 짬뽕은 6000원이다.

# 값을 두 개 넣을 경우 괄호 안의 값이 순서대로 출력된다.
print("나는 %s과 %s을 좋아한다." % ("짬뽕", "짜장면")) # 나는 짬뽕과 짜장면을 좋아한다.

# {}를 사용하는 방법도 있다.
print("나는 {}을 좋아한다.".format("짬뽕")) # 나는 짬뽕을 좋아한다.
print("나는 {}과 {}을 좋아한다.".format("짬뽕", "짜장면")) # 나는 짬뽕과 짜장면을 좋아한다.

# {} 안에 인덱스를 넣어서 출력 순서를 지정할 수 있다.
print("나는 {1}과 {0}을 좋아한다.".format("짬뽕", "짜장면")) # 나는 짜장면과 짬뽕을 좋아한다.

# 변수로 지정하여 사용할 수도 있다.
print("{food}은 {price}원이다.".format(food = "짬뽕", price = 6000)) # 짬뽕은 6000원이다.

# 문자열 앞에 f를 넣어서 외부 변수도 사용 가능하다.
food = "짬뽕"
price = 6000
print(f"{food}{price}원이다.) # 짬뽕은 6000원이다.

탈출문자

  • 탈출문자는 문자열과 함께 입력 시 문자열로 인식되는 것이 아닌 문자열에 여러 효과 / 변화를 주는 문자를 의미한다.
print("안녕하세요, 저는 사람입니다.\n놀랍죠?") # 줄바꿈
'''
안녕하세요, 저는 사람입니다.
놀랍죠?
'''

# 문자열에 따옴표가 포함된 경우
## 큰따옴표와 작은따옴표로 구분하는 방법
print('안녕하세요, 저는 "사람"입니다.') # 안녕하세요, 저는 "사람"입니다.
## 따옴표 앞에 역슬러시\를 넣는 방법
print("안녕하세요, 저는 \"사람\"입니다.") # 안녕하세요, 저는 "사람"입니다.
### 역슬러시 앞에 역슬러시를 넣는 것도 가능하다.
print("\\\\") # \\
print("C:\\Python") # C:\Python

# 커서를 맨 앞으로 이동한 후 입력, 이 때 입력되는 문자 수만큼 원래 문자가 삭제됨
print("Red Apple\rPine") # PineApple
# 백스페이스
print("Redd\b Apple") # Red Apple
# 탭
print("Red\tApple") # Red	Apple

연습문제

사이트별로 다른 비밀번호를 만들어 주는 코드 작성하기

  • 규칙1 : 'http://' 부분은 제외. (ex: http://naver.com => naver.com)
  • 규칙2 : 처음 만나는 온점 이후 부분은 제외. (ex: naver.com => naver)
  • 규칙3 : 남은 글자 중 처음 세자리 + 남은 글자 갯수 + 남은 글자 내 'e' 갯수 + '!'로 구성.
    (ex: naver => nav51!)
# 도메인을 변수로 저장
site = 'http://google.com' 

# 온점(.) 기준으로 앞부분만 남긴 후 'http://' 삭제
site_name = site[:site.index(".")].replace("http://", "") 

# 규칙 1,2,3 적용
password = str(site_name[0:3]) + str(len(site_name)) + str(site_name.count("e")) + "!" 

# 양식 작성 후 출력
print(f"{site} 의 비밀번호 : {password}") #양식에 맞게 출력

# http://google.com 의 비밀번호 : goo61!
profile
개발자로 자기 개발 중

0개의 댓글