본문 바로가기

Python/문법

파이썬 기본 문법

1. 출력 print

 

-[.ipynb] 확장자 = 주피터 노트북의 확장자로 코드를 추가하며서 프로그램 할 수 있는 방식 

 

- 쌍따옴표와 따옴표는 문자열 중간에 쌍따옴표를 넣고 싶을 경우 따옴표로 감싼 후 출력

- 문자열 중간에 따옴표를 넣고 싶을 경우 쌍따옴표로 감싼 후 출력

print('hello "안녕하세요" ')
## hello "안녕하세요"

print("hello '안녕하세요'")
## hello '안녕하세요'

 

- 여러 문자를 ,(콤마)를 이용하여 합쳐서 출력할 수 있다. 

print('안녕','하세요','반갑습니다')
## 안녕 하세요 반갑습니다

 

- 문자를 더해 출력하면 띄어쓰기가 자동으로 되지 않는다.

print('안녕'+'하세요'+'반갑습니다')
## 안녕하세요반갑습니다

 

- 여러 줄을 입력하고 싶을 경우 """ 쌍따옴표 3개로 시작 후 줄을 바꾼 후 """ 쌍따옴표 3개로 종료하면 여러 줄의 출력 가능

print("""안녕하세요
오늘은 날씨가 좋네요""")

## 안녕하세요
## 오늘은 날씨가 좋네요

 

- \(역슬래쉬)를 이용하여 줄바꿈을 할 수도 있다. 

print("안녕하세요"\
"오늘은 날씨가 좋네요")
##안녕하세요오늘은 날씨가 좋네요

 

 

- .format 형식을 이용하여 변수를 바로 출력 가능 

a=123
b="안녕하세요"
print(f"a값:{a} b값:{b}")

## a값:123 b값:안녕하세요

 

- f-string 표현방법

a=123
b="안녕하세요"
print(f"a값:{a} b값{b}")

## a값:123 b값안녕하세요

 

 

2. 입력 input

 

- 명령 프롬프트에서 사용자로부터 글자, 숫자 등 데이터를 입력 받을 때 input() 함수를 사용한다.

 

a=input("첫 번째 문자열 입력:")
b=input("두 번째 문자열 입력:")

print(a+b)

 

 

3. 변수 - 숫자형, 문자형, 소수점형, BOOL형 

 

- = 을 기준으로 왼쪽의 변수가 오른쪽의 주소값을 가리키고 주소를 찾아가면 실제 값이 무엇인지 알 수 있다. 

a=10
b=20
c=a+b
print(c)

## 30

 

 

- 문자열을 숫자형으로 int()를 사용하여 숫자형으로 변환할 수 있다, 

c=20
d='10'

print(c+int(d))

## 30

 

- 숫자형 20이 저장된 c의 값을 문자열로 변환하여 더할 수 있다. 

- 숫자형을 문자형으로 변환하기 위해서는 str()로 변환하면 된다. 

a = '10'
b = 20

print(str(b)+a)

## 2010

 

 

- 소수점형 자료형 

- float()을 이용하여 소수점형으로 변환할 수 있다. 

a = 3.14
b = 10

print(a+b)

## 13.14

 

a = 10
b = 10
c = float(a)+float(b)
print(c)

## 20.0

 

 

- True(참)과 False(거짓)의 두 가지 값을 가지는 bool형 

 

a_bool = True
b_bool = False
a_int = 1
b_int = 0
print(a_bool)
print(b_bool)
print(type(a_bool))
print(type(b_bool))
print(a_int)
print(b_int)
print(type(a_int))
print(type(b_int))


"""
True
False
<class 'bool'>
<class 'bool'>
1
0
<class 'int'>
<class 'int'>
"""

 

 

4. 자료형 - 리스트, 튜플, 딕셔너리, 집합 

 

1) 리스트 

 

- 여러 개의 데이터를 하나의 변수로 묶어 표현할 수 있는 자료형 

- a_list[:2]는 처음부터 2번째 전까지의 데이터를 가져옴

- a_list[2:]는 2번째부터 마지막까지의 데이터를 가져옴 

a_list = [1,2,3,4,5]
print(a_list)
print(a_list[0])
print(a_list[1])
print(a_list[:2])
print(a_list[2:])

"""
[1, 2, 3, 4, 5]
1
2
[1, 2]
[3, 4, 5]
"""

 

- b_list = [] 빈 리스트를 생성하고 b_list.append()로 1,2,3 데이터 삽입 

b_list=[]
b_list.append(1)
b_list.append(2)
b_list.append(3)
print(b_list)

## [1,2,3]

 

- 리스트에는 여러 타입의 변수 형태가 저장될 수 있다. 

c_list = [1,3.14,"hello",[1,2,3]]
print(c_list)
print(c_list[1:3])

"""
[1, 3.14, 'hello', [1, 2, 3]]
[3.14, 'hello']
"""

 

- 리스트는 데이터를 변경할 수 있다. 

- d_list[0] = 5를 이용하여 0번지의 데이터를 5로 변경 

d_list=[1,2,3,4,5]
print(d_list)
d_list[0] = 5
print(d_list)

"""
[1, 2, 3, 4, 5]
[5, 2, 3, 4, 5]
"""

 

 

2) 튜플(Tuple)

 

 

- 튜플은 () 소괄호로 데이터를 묶는다. 

- 튜플은 리스트와 매우 비슷하나 튜플의 데이터는 변경할 수 없다

 

a_tuple=(1,2,3,4,5)
print(a_tuple)

## (1, 2, 3, 4, 5)

 

 

3) 딕셔너리(Dictionary)

 

- key와 value 형태로 구성

- 딕셔너리형의 표현은 {} 중괄호로 데이터를 묶는다. 

 

a_dic = {'a':1,'b':2,'c':3}
print(a_dic)
print(a_dic['a'])
print(a_dic['b'])
print(a_dic['c'])

"""
{'a': 1, 'b': 2, 'c': 3}
1
2
3
"""

 

 

4) 집합(set)

 

- set()의 자료형은 중복이 없는 자료형 

- set() 자료형의 입력은 리스트로 입력한다. 

- set()형은 순서대로 정렬하지 않는다. 

 

b_set = set([1,1,2,2,3,3,4,5,6])
print(b_set)

## {1, 2, 3, 4, 5, 6}

 

 

5. 연산 - 사칙연산, 논리연산, 비교연산 

 

사칙연산 

print("더하기:",10+20)
print("빼기:", 10-20)
print("곱하기:",10*20)
print("나누기:",10/20)
print("10**2:",10**2)
print("10**3:",10**3)
print("10**4:",10**4)
print("몫:",40//6)
print("나머지:",40%6)

"""
더하기: 30
빼기: -10
곱하기: 200
나누기: 0.5
10**2: 100
10**3: 1000
10**4: 10000
몫: 6
나머지: 4
"""

 

 

논리연산 

 

or 연산

 

- 값이 하나라도 참일 경우에 참인 연산 

print(0 or 0)
print(0 or 1)
print(1 or 0)
print(1 or 1)
print(False or False)
print(False or True)
print(True or False)
print(True or True)

"""
0
1
1
1
False
True
True
True
"""

 

 

and 연산 

 

- 모든 값이 참이어야 참인 연산

print(0 and 0)
print(0 and 1)
print(1 and 0)
print(1 and 1)
print(False and False)
print(False and True)
print(True and False)
print(True and True)

"""
0
0
0
1
False
False
False
True
"""

 

 

not 연산 

- 자신의 상태를 반전 

 

print(not 0)
print(not 1)
print(not False)
print(not True)

"""
True
False
True
False
"""

 

 

비교연산 

 

print(10 == 10)
print(10>=10)
print(10<=10)
print(10<5)
print(10>5)
print(10!=10)

"""
True
True
True
False
True
False
"""

 

- in은 리스트나 문자열에서 포함된 값을 비교 

a_list = ['a',2,'hello',3]
print('a' in a_list)
print(1 in a_list)
print('hello' in a_list)
print(3 in a_list)

"""
True
False
True
True
"""

 

- in을 이용하여 문자열에서 문자가 포함되어 있는지 확인가능

a_str = "hello python"
print("python" in a_str)
print("py" in a_str)
print("40" in a_str)

"""
True
True
False
"""

 

 

6. 조건문

 

a=1
b=2

if a==b:
  print("두 개의 값은 같습니다.")
else:
  print("두 개의 값은 같지 않습니다.")
  
 ## 두 개의 값은 같지 않습니다.

 

a=1
b=2

if a>b:
  print("a 값이 더 큽니다.")
elif a<b:
  print("b 값이 더 큽니다.")
else:
  print("두 개의 값은 같습니다.")
  
  ## b 값이 더 큽니다.

 

a_str = "hello python"
if a_str == "hello python":
  print("hello python 문자열이 같습니다.")
if a_str == "hi python":
  print("hi python 문자열이 같습니다.")
if "hello" in a_str:
  print("hello가 포함되어 있습니다.")
if "hello" not in a_str:
  print("hello가 포함되어 있지 않습니다.")
if "hi" not in a_str :
  print("hi가 포함되어 있지 않습니다.")
  
  
  """
  hello python 문자열이 같습니다.
hello가 포함되어 있습니다.
hi가 포함되어 있지 않습니다.
"""

 

 

a_list = ["안녕",1,2,"파이썬"]
if "안녕" in a_list:
  print("a_list에 안녕이 포함되어 있습니다.")
if 2 in a_list:
  print("a_list에 숫자 2가 포함되어 있습니다.")
if "안녕" not in a_list:
  print("a_list에 안녕이 포함되어 있지 않습니다.")
if 5 not in a_list:
  print("a_list에 숫자 5는 없습니다.")
  
  
"""
a_list에 안녕이 포함되어 있습니다.
a_list에 숫자 2가 포함되어 있습니다.
a_list에 숫자 5는 없습니다.
"""

 

 

7. 반복문 while문, for문

 

for 문

- 참과 거짓을 기준으로 조건이 거짓이 되기 전까지 무한 반복적으로 실행 

 

- for i in range(7): 는 0부터 7-1까지 반복 

for i in range(7):
  print(i)
  
 """
0
1
2
3
4
5
6
"""

 

- range의 범위 지정 가능 

- range(시작,끝)으로 시작부터 끝-1까지 반복 

 

for i in range(5,10):
  print(i)
  
"""
5
6
7
8
9
"""

 

- range 함수의 3번째 인자에 -1을 입력하면 역순으로 출력 가능 

for i in range(10,5,-1):
  print(i)
  
"""
10
9
8
7
6
"""

 

- 리스트에서 for문을 이용하여 값을 가져오는 방법

a_list = [1,2,3,4,5,"안녕","하세요"]
for i in a_list:
  print(i)

"""
1
2
3
4
5
안녕
하세요
"""

 

- for문을 이용하여 문자의 수만큼 반복 

a_str = "hello python"
for i in a_str:
  print(i)

"""
h
e
l
l
o
 
p
y
t
h
o
n
"""

 

- enumerate를 이용하면 리스트에서 위치와 값을 가져올 수 있다. 

- name_list에서 i는 리스트의 위치, k는 리스트의 값을 가져올 수 있다. 

- enumerate() 괄호안에 리스트, 문자열 등을 넣으면 된다. 

 

name_list = ["홍길동","장다인","김철수"]
age_list = [500,5,12]
for i,k in enumerate(name_list):
  print("i=",i,end=' ')
  print("k=",k)
  
  
"""
i= 0 k= 홍길동
i= 1 k= 장다인
i= 2 k= 김철수
"""

 

 

- enumerate 사용하지 않고 list의 길이만큼을 range에 입력하여 사용 

name_list = ["홍길동","장다인","김철수"]
age_list = [500,5,12]

for i in range(len(name_list)):
  print(name_list[i],end=' ')
  print(age_list[i])
  
"""
홍길동 500
장다인 5
김철수 12
"""

 

- range(len(name_list)와 같이 name_list의 길이를 range 함수에 입력하여 for문을 반복

test_list = [i for i in range(10)]
print(test_list)

test2_list = []
for i in range(10):
  test2_list.append(i)
print(test2_list)

"""
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
"""

 

- 리스트를 만들고 초기에 원하는 값을 넣을 때 많이 사용 

test_list = [i*5 for i in range(10)]
print(test_list)
test2_list = [0 for i in range(10)]
print(test2_list)


"""
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
"""

 

 

while문

 

 

- [while 조건: ]에서 조건이 참일 때 계속 반복

 

a=0
while a<5:
  print(a)
  a=a+1
  
"""
0
1
2
3
4
"""

 

 

a=0
while True:
  print(a)
  a=a+1
  if a>=5:
    break

"""
0
1
2
3
4
"""

 

 

8. 오류 및 예외처리 

 

- try; except: 구문을 이용하여 예외 에러 처리 

try:
  dsjafakldsaji
except:
  print("에러발생")

 

- pass를 사용하면 아무것도 하지 않고 넘어간다. 

try:
  dsjafakldsaji
except:
  pass
print("에러를 무시")

 

- 에러의 원인을 알고 싶으면 Exception as e를 이용하여 'e'를 출력해보면 에러의 원인이 출력된다. 

try:
  dsjafkldsaji
except Exception as e:
  print("에러발생 원인:",e)
  
  
## 에러발생 원인: name 'dsjafkldsaji' is not defined

 

 

 

9. 함수 

 

- def 이름: 을 이용 

- 코드에서 func()를 호출하면 func() 함수안에 정의된 코드를 실행 

def func():
  print("안녕하세요")
  print("파이썬과 40개의 작품들 입니다.")
func()

"""
안녕하세요
파이썬과 40개의 작품들 입니다.
"""

 

 

def func_add(a,b):
  return a+b
c = func_add(1,2)
print(c)

## 3

 

def func_mux(a,b):
  mux = a*b
  return mux
c = func_mux(2,3)
print(c)

## 6

 

def func_add_mux(a,b):
  add = a+b
  mux = a*b
  return add,mux
a,b = func_add_mux(1,3)
print(a,b)

## 4 3

 

def func_add_mux(a,b):
  add = a+b
  mux = a*b
  return add,mux
_,b = func_add_mux(1,3)
print(b)

## 3

 

10. 클래스 

 

- 클래스를 이용하여 틀을 만들고 그 틀대로 찍어 객체를 만들 수 있다. 

- 틀을 이용하여 객체를 찍어내면 되기 때문에 객체는 틀을 찍는 대로 생성 가능하다. 

- 클래스로 객체를 생성하였으면 객체는 클래스에서 만든 메서드(함수)를 사용할 수 있다. 

 

class Greet():
  def hello(self):
    print("hello")
  def hi(self):
    print("hi")

human1 = Greet()
human2 = Greet()
human1.hello()
human1.hi()
human2.hello()
human2.hi()

"""
hello
hi
hello
hi
"""

 

- __init__ 함수를 만들면 클래스를 생성할 때 바로 실행된다. 

- self는 자기 자신으로 클래스 메서드를 만들 때 꼭 붙여준다. 

- self.name, self.age, self.like는 Student() 클래스에서 사용하는 클래스 변수로 클래스내에 다른 메서드에서 사용 가능하다. 

class Student():
  def __init__(self, name, age, like):
    self.name = name
    self.age = age
    self.like = like
  def studentInfo(self):
    print(f"이름{self.name}, 나이{self.age},좋아하는 것:{self.like}")
김철수 = Student("김철수",17,"축구")
장다인 = Student("장다인",5,"헬로카봇")
김철수.studentInfo()
장다인.studentInfo()


""'
이름김철수, 나이17,좋아하는 것:축구
이름장다인, 나이5,좋아하는 것:헬로카봇
"""

 

 

- 클래스는 상속받아 이어 사용 가능하다. 

- Mother() 클래스의 characteristic(self)는 "키가 크다" "공부를 잘한다"를 출력

- Daughter(Mother) 클래스는 Mother 클래스를 상속받았고 Daughter()클래스의 characteristic(self)은 super.characteristic()로 부터 상속받은 "키가 크다" " 공부를 잘한다"와 자기 자신이 잘하는 "운동을 잘한다"를 출력

class Mother():
  def characteristic(self):
    print("키가 크다.")
    print("공부를 잘한다.")

class Daughter(Mother):
  def characteristic(self):
    super().characteristic()
    print("운동을 잘한다.")

엄마 = Mother()
딸 = Daughter()
print("엄마는")
엄마.characteristic()
print("딸은")
딸.characteristic()

"""
엄마는
키가 크다.
공부를 잘한다.
딸은
키가 크다.
공부를 잘한다.
운동을 잘한다.
"""

 

 

- 상속받은 메서드(함수)를 사용할 때는 super()를 사용 

- __init__를 이용하여 객체를 생성하자마자 출력하는 방법

- super().__init()__()은 상속받은 클래스의 __init__을 실행 

 

class Mother():
  def  __init__(self):
    print("키가 크다.")
    print("공부를 잘한다.")

class Daughter(Mother):
  def __init__(self):
    super().__init__()
    print("운동을 잘한다.")

print("엄마는")
엄마 = Mother()
print("딸은")
딸 = Daughter()

"""
엄마는
키가 크다.
공부를 잘한다.
딸은
키가 크다.
공부를 잘한다.
운동을 잘한다.
"""