■여러가지 타입
type(int)
type(float)
type(str)
type(list)
type(tuple)
bool(True,False)
type(set)
type(dict)
■연산자

■스트링에러 ('이 싱글코테션으로 인식되는 경우)
원본: Who am i, "i have a i'am" , that park (에러 발생)
수정: '''Who am i, "i have a i'am" , that park''' (앞뒤로 더블코테,싱글코테를 삽입한다.) (문자로 인식됨)
코드: '''Who am i, "i have a i'am" , that park'''
Who am i, "i have a i\'am" , that park' (\ 이스케이프 문자 표시)
■print 사용법
기본: print("박현진")
응용: print("박\n현진") (\n 개행문자)
응용: print("박현\n진짱이야\t일까?") (\t 탭의 약자, 탭 키를 누른것과 같음)
코드: print("박현\n진짱이야\t일까?")
박현
진짱이야 일까?
---인덱싱---
기본: "박현진이야"
응용: "박현진이야"[3] 인덱싱: 몇번째 순서의 특정 값을 가져와
코드: "박현진이야"[3]
'이' 가 출력 (순서: 0,1,2,3,4,5)
응용: "박현진이야"[-1] -1을 넣어보자
코드: "박현진이야"[-1]
'진' 가 출력 (순서: 뒤에서부터 -1,-2,-3)
응용: "박현진이야"[2:5] 2:5을 넣어보자
코드: "박현진이야"[2:5] 슬라이싱: 몇번에서 몇번을 가져오겠다.
'진이야' 가 출력 (주의: 시작 순서는 0에서 시작, 끝은 시작에서 5번째까지의 값)
코드: "박현진이야"[0:-1] -1번째를 빼는거
'박현진이' 가 출력
코드: "박현진이야"[1:-3]
'현'
코드: "박현진이야"[2:] / "박현진이야"[:3]
'진이야' / '박현진'
※인덱싱은 소수점을 사용할 수 없음! 정수만 사용가능
--- 기호 및 Split 사용---
코드: 파이썬" + "은" +" "+ "참 어렵구나" + 기호는 문자를 붙여준다.
'파이썬은 참 어렵구나'
코드: "1234123412341234".split("23") split은 해당 문자를 기준으로 문자를 쪼개준다.
['1', '41', '41', '41', '4']
코드: "1234123412341234".split("1")
['', '234', '234', '234', '234']
--- in 사용---
코드: "p" in "parkhyunjin"
True
코드: "15" in "parkhyunjin"
False
코드: "15" not in "parkhyunjin"
True
■리스트 정리
코드: a = [1,2,3,4,5,6,"박현진"]
결과: a[6]
'박현진'
응용: a[3:5 + 6]
[4, 5, 6, '박현진']
코드: a[7] = "우리금동이" (리스트 내부의 인덱싱 내용 바꾸기)
결과: a
[1, 2, 3, 4, 5, 6, '우리금동이']
코드: b = "parkhmhjr" (스트링 변수 입력)
코드: b[1] = "g" (1번 '스트링' 인덱스 내용 바꾸기)
결과: TypeError: 'str' object does not support item assignment
스트링 인덱싱 내용은 리스트와 달리 값 변환이 제한 됨
코드: a.append("박현진") (a변수 끝에 값을 '추가')
결과: [1, 2, 3, 4, 5, 6, '우리금동이', '박현진']
코드: a.pop(0) (a변수 끝에 값을 '삭제')
결과: [1, 2, 3, 4, 5, 6, '우리금동이']
코드: b = a.pop() (스트링 금동이를 정수 6으로 치환하고 했음 / 스트링 pop 안됨!)
결과: b
Out[56]: 6 (값 6 삭제)
In [57]: a
Out[57]: [1, 2, 3, 4, 5] (a를 출력해보니 삭제되어있음)
■튜플 정리 (리스트와 달리 소괄호를 사용한다.)
코드: b = (1,2,3,4,5,6)
결과: b
(1, 2, 3, 4, 5, 6)
코드: b.append(3)
결과: AttributeError: 'tuple' object has no attribute 'append'
코드: b.pop()
결과: AttributeError: 'tuple' object has no attribute 'pop'
-> 튜플은 어떠한 값도 추가/삭제가 불가능하다
코드: c = "abcde"
결과: len(c) (len으로 c 변수의 값의 길이를 알수있다.)
5 개
■함수 (input과 output)
코드: def box(x):
return x + 3 (return은 값을 뱉어내는(output) 부분)
결과: box(15)
18
응용: def gugu(x):
...: print(x)
...: print(x * 2)
...: print(x * 3)
...: print(x * 4)
...: print(x * 5)
...: print(x * 6)
...: print(x * 7)
...: print(x * 8)
...: print(x * 9)
...: print(x * 10)
결과: gugu(5)
5
10
15
20
25
30
35
40
45
50
■pypi.org (파이썬 패키지 인덱스 / 다른 사람의 코드를 가져오자!)
# pip install numpy [git bash에서 실행]
>>> import numpy as np
>>> a = np.arange(15).reshape(3,5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
-> 테스트 해봤으면 구글에 numpy로 ## 하는법 검색하자~
■실습 자료
- while 실습
numbers = [1,2,3]
length = len(numbers)
i = 0
while :
print(numbers[i])
i = i + 1
numbers = [(1, 2), (10, 0)]
for a, b in numbers:
if b == 0:
print("0으로 나눌 수는 없습니다.")
# else:
continue
print("{}을(를) {}로 나누면 {}".format(a, b, a/b))
for문 = range(범위) 만큼 반복함
break = 반복문에서 멈추는 타이밍
continue = for 반복문을 돌다가 특정 조건을 만족하게 될 때 for문의 처음으로 바로 올라가고 싶을때 (참이면 그 구문을 스킵하고 다음 것 실행)
- try,except 실습
>>> try:
... a = 3/0
... print(a)
... except ZeroDivisionError:
... print("0으로는 못나눈다 맨이야")
...
0으로는 못나눈다 맨이야
- try,except 실습2 (예외처리한 에러가 어떤 오류인지 확인)
>>> try:
... a = 5
... b = 0
... c = a / b
... except Exception as ex:
... print('다음과 같은 에러가 발생했습니다: {}'.format(ex))
...
다음과 같은 에러가 발생했습니다: division by zero
raise 에러 발생 시키는 실습
>>> shops = {
... "송일문방구": {"강시영": 500, "김민창": 3000},
... "알파문구": {"강시영": 800, "박해성": 300, "전희상": 8000},
... "다이소": {"강시영": 500, "박현진": 2000, "대통령": 3000}
... }
>>>
>>> for shop, products in shops.items():
... for product, price in products.items():
... if product =='강시영':
... print("{}: {}은 {}원".format(shop,product,price))
...
송일문방구: 강시영은 500원
알파문구: 강시영은 800원
다이소: 강시영은 500원
shops = {
"송일문방구": {"김민창": 500, "박해성": 3000},
"알파문구": {"강시영": 80000000, "전희상": 300, "김만두": 8000},
"다이소": {"강시영": 500, "박현진": 2000, "김민창": 3000}
}
try:
for shop, products in shops.items():
for product, price in products.items():
if product =='강시영':
print("{}: {}은 {}원".format(shop,product,price))
raise StopIteration #raise 에러코드 발생
except StopIteration: #에러코드 예외처리
print("정상적인 가격이네요!")
출력>
알파문구: 강시영은 80000000원
정상적인 가격이네요!
- 딕셔너리 if 문으로 and 연산
dic = {"key2":"Value1"}
if "key1" in dic and dic["key1"] == "value1":
print("key1도 있고, 그 값은 value1이네")
else:
print("아니네")
출력>
아니네
- 딕셔너리 출력방법
딕1 = {'남편':'아내'}
딕1['남편'] # 남편이라는 키의 밸류를 불러옴
출력>
아내
print(딕1) # 키 : 밸류 형식으로 다 불러옴
출력>
{'남편': '아내'}
딕1.keys() # key를 불러오는 형식에 dict_keys가 포함됨
출력>
dict_keys(['남편'])
- 딕셔너리 출력 응용
딕1 = {'김민창' : '만두', '박현진' : '금동이'}
사랑하는동물 = '박현진'
[사랑하는동물] + "의 형아는 박현진" #사랑하는동물 이라는 변수의 결과 값을 딕1에서 찾아 key에 있을 경우
출력>
'금동이의 형아는 박현진'

- def 및 함수.index(값) 연습
def safe_index(my_list, value):
if value in my_list: #2번: my_list = [1,2,3,4,5] 안에 value = 5가 있는지 확인.(True)
return my_list.index(value) #3번: [1,2,3,4,5] 안에 5가 몇 번째 있는지 검색 후 값을 #1번에 리턴 후 함수 종료.
else:
return None
print(safe_index([1,2,3,4,5], 5)) #1번:safe_index 함수 호출 my_list에 [1,2,3,4,5] 전달, value에 5 전달.
#4번:리턴 받은 값을 출력(값 : 4)
print(safe_index([1,2,3], 5)) #5번:1번과 마찬가지 과정을 거치고 my_list = [1,2,3] 안에 value = 5 값이 없으므로 리턴 받은 None 값 출력.

- while 문 끝나는 조건: ture를 반복하다가 false 때 멈춤
n = 100
s = 0
count = 1
while count < n: #while은 값이 false가 나올때 까지 반복함
s = s + count
count = count + 1
print(count)
print(count,"의 값입니다.")
값: 100,의 값입니다
- def 함수명(임의로 디폴트값 넣거나 안넣거나):
return
-for 문 실습( 2가지 패턴)
# for 문 패턴1 (pi리스트를 정의해서 안에 값의 갯수 만큼 for문을 반복)
pi =[3.14, 3.15, 3.16]
def circleArea(r):
for item in pi:
area = item * (r**2)
print("r: {}, pi : {}".format(r,item))
circleArea(3)
#print값이 3개 나옴 pi 리스트 값 개수만큼
print("다음 코드 시작합니다.\n")
# for 문 패턴2 (pi를 바로 값 하나로 정의하고 for 1번만 반복)
def circleArea(r,*pi): #(즉 item=pi값이 된다.)
for item in pi:
area = item * (r**2)
print("r: {}, pi : {}".format(r,item))
circleArea(3,3.15)
#print값이 1개만나옴

- 람다식






- 입/출력 방법 (file)

print("휴가일정을 입력 해 주세요 :\n ex) 5월1일 = 5,1")
def s(): # 함수의 정의와 파일 내용을 데이터로 저장
file = open('D:\python_work\Holiday_check\Holiday_check.txt','a',encoding='utf8')
try:
a1,a2 = (input().split(','))
print('입력하신 휴가일정은 {}월 {}일 입니다.'.format(a1,a2),file=file)
print('입력하신 휴가일정은 {}월 {}일 입니다.'.format(a1,a2))
except ValueError:
print('형식에 맞춰 재 입력 하십시오 :', end =" ")
s() # ValueError 에러가 났을 경우 함수 재 실행
file.close()
s() # 중요!! : s()함수를 실행
- Class란

클래스와 객체
#self: 객체 자신을 가리키는 특수한 키워드, 다른 언어의 this 키워드와 유사한 개념을 가짐
ex)
#1
class Car():
'''자동차'''
def name(self,name):
self.name = name
taxi = Car()
taxi.name('taxi1')
print(taxi.name)
class Car():
'''자동차'''
def run(self):
print("{}가 달립니다.".format(self.name))
taxi = Car()
taxi.name = "택시"
taxi.run()
#2
class MyClass(object):
name = 'korea'
def get_name(self):
return self.name
def getinfo(self):
self.get_name()
m1 = MyClass()
m2 = MyClass()
m3 = MyClass()
m3.name = 'Spain'
print(m1.name)
print(m2.name)
print(m3.get_name())
클래스연습#1
class Human():
def __init__(self, name, weight):
self.name = name
self.weight = weight
def __str__(self):
return "{} (몸무게 {}kg)".format(self.name, self.weight)
def eat(self):
self.weight += 0.1
print("{}가 먹어서 {}kg이 되었습니다.".format(self.name, self.weight))
def walk(self):
self.weight -= 0.1
print("{}가 걸어서 {}kg이 되었습니다.".format(self.name, self.weight))
# 아래에서 person을 이름과 몸무게를 가지는 Human클래스의 인스턴스로 만들어보세요.
person = Human('다라이',15)
print(person.walk())
print(person.walk())
print(person.eat())
# 클래스 상속개념
class Car():
def run(self):
print("차가 달립니다.")
# 아래에서 Car를 상속받는 Truck이라는 클래스를 만들고, load라는 메소드를 만들어 보세요.
# load메소드에서는 "짐을 실었습니다."라고 출력하면 됩니다.
class Truck(Car): #<--Truck 클래스의 부모클래스를 Car로 지정해주어 Car()의 메소드를 쓸수있게됨
def load(self):
print('짐을 실었습니다.')
park = Truck()
print(park.run())
print(park.load())
# 오버라이드 (같은 이름을 가진 메소드 덮어쓰기)
class Car():
def run(self):
print("차가 달립니다.")
class Truck(Car):
def load(self):
print("짐을 실었습니다.")
# 이 아래에서 run 메소드를 오버라이드 하세요.
def run(self):
self.run = print('트럭이 달립니다.') or print('트럭이 달립니다')
truck = Truck()
truck.run()
# 클래스 상속개념
class Car():
def run(self):
print("차가 달립니다.")
# 아래에서 Car를 상속받는 Truck이라는 클래스를 만들고, load라는 메소드를 만들어 보세요.
# load메소드에서는 "짐을 실었습니다."라고 출력하면 됩니다.
class Truck(Car): #<--Truck 클래스의 부모클래스를 Car로 지정해주어 Car()의 메소드를 쓸수있게됨
def load(self):
print('짐을 실었습니다.')
park = Truck()
print(park.run())
print(park.load())
#부모 클래스로 일부 값으로 처리하고 나머지는 자식 클래스가 처리 상속 개념 : super().메소드명(아규먼트)
class Car():
def __init__(self, name):
self.name = name
def run(self):
print("차가 달립니다.")
class Truck(Car):
# 이 아래에서 __init__ 메소드를 오버라이드 하세요
def __init__(self, name, capacity):
super().__init__(name) #<- 부모의 __init__ (name)메소드를 호출
self.capacity = capacity #<- capacity에 메소드를 자기로 선정
print('{}이 {}kg을 싣고있다람쥐.'.format(self.name,self.capacity))
def load(self):
print("짐을 실었습니다.")
gogo = Truck('트럭','50')
print(gogo)
'개발' 카테고리의 다른 글
| 파이썬3 Django (0) | 2023.10.02 |
|---|---|
| 파이썬3 연차 사용 확인 소스코드 (작성중) (0) | 2023.09.26 |
| 자바스크립트 실습3 : 연산자 (0) | 2023.02.21 |
| 자바스크립트 실습2: 클릭으로 글자 색 바꾸기 (0) | 2023.02.20 |
| 자바스크립트 실습1: 나이계산기 (0) | 2023.02.11 |