• 클래스 : 변수&매서드(함수)를 정해 놓는 틀

 

  • 클래스를 사용 하는방법

1. class 를 입려하고,

2. 대문자로 시작하는 클래스 이름 설정( 관례적인 약속) 

3. 안에 들어갈 함수와 변수 설정  


class Mingcal:

  def setdate(self,first,second):

    self.first=first

    self.second=second

a=Mingcal()

a.setdate(1,2)

print(a.first)

print(a.second)

 

1

2

 

데이타를 셋업함

 

데이타 셋업을 통하여 계산을 해보았다. 


class Mingcal:

  def setdate(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

a=Mingcal()

a.setdate(4,2)

print(a.add())

 

6


여기서 왜 setdate 를 굳이 하는 지 궁금했음 왜냐면, 바로 date를 아래와 같이 셋업을 동시에 할 경우 짧게 코드를 짤수 있다.

 


class MingCal:

  def add(self,firstsecond):

    self.first = first

    self.second = second

    result= self.first+self.second

    return result

a=MingCal()

print(a.add(1,2))


근데 이렇게 짜지 않는 이유는 이렇게 한다면 class 를 쓸 필요가 없을거같음. 다른 함수를 함께 쓸때도 다시 self.somthing 변수 매번정의 해야하는 코드를 짜야 하기 때문이다. 그렇기 때문에 아래와 같이 setdate를 해놓고 아래에 다른 *를 계산하는 함수도 함께 하여 구조체를 만들수 있음.


class Mingcal:

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

  def mul(self):

    result=self.first*self.second

    return result

a=Mingcal()

a.setdata(1,2)

print(a.add())

print(a.mul())

3

2


클라스를 사용 하면서, 가장 먼저 실행 해야는걸 __init__ 이라고 한다. 

그럼 __init__을 사용하였을때와 안하였을때의 차이는 멀까?


class Mingcal:

  def __init__(self,first,second):

    self.first=first

    self.second=second

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

a=Mingcal(1,2)

print(a.add())

3


가장먼저 __init__ 를실행 하게 된다. 그렇기 때믄 a=Mingcal 을 정의 할때 Mingcal() 변수를 공란으로 두는것이 아닌(someting, something) 을 기입 하라고 오류가 발생함. 위와 같은 예시로 바로 a.setdate(1,2) 과정없이 a를 정의할때 변수를 기재하여야함 

 

 

  • 클래스의 상속 

 

정의한 클래스(부모)를 또다른 클래스(자식)에서 불러 올수있다. 즉, 부모에서 짜놓은 클래스를 자식이 그래로 가져와서 자식 클래스에서 사용할수있는것!변형 또한 가능하다.


class Mingcal:

  def __init__(self,first,second):

    self.first=first

    self.second=second

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

class MoreMingcal(Mingcal):

  pass

a=MoreMingcal(1,2)

print(a.add())

3


 부모 class 에 없는 매서드(함수) 를 추가 할수 있다. 부모의 클라스에 ** 제곱을 추가해보자


class Mingcal:

  def __init__(self,first,second):

    self.first=first

    self.second=second

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result


class MoreMingcal(Mingcal):

  def pow(self):

    result= self.first**self.second

    return result

a=MoreMingcal(1,2)

print(a.pow())

1


부모의 클라스에서 변형도 가능 하다. div 매서드를 변형해보자 


class Mingcal:

  def __init__(self,first,second):

    self.first=first

    self.second=second

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

  def div(self):

    result=self.first/self.second

    return result

class MoreMingcal(Mingcal):

  def div(self):

    if self.second==0:

      return 0

    else:

       self.first/self.second

a=MoreMingcal(4,0)

print(a.div())

0


마지막으로 클라스변수, 객체 변수 를 알아보자. 위와같이 변수를__init__을 사용하여 self.first 는 something 으로 한후, a=Mincal(1,2) 이렇게 줄수 있지만, 바로 클라스의 변수를 줄수 있다.


class Mingcal:

  first=1

  second=6

  # def __init__(self,first,second):

  #   self.first=first

  #   self.second=second

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

a=Mingcal()

b=Mingcal()

print(a.first)

print(b.first)

1

1


클라스를 정의한 a,b 모두 first =1 이라는 값을 내는 것을 알수 있다. 그럼 클라스의 변수 값을 바꿀수 있을까 ? 


class Family:

  lastname="킴"

Family.lastname="박"

print(Family.lastname)

 

a=Family()

b=Family()

print(a.lastname)

print(b.lastname)


위와같이 클라스 자체의 로직을 바꿀수있다.

  • Immutable_ 정수, 실수,문자열,튜플

 

a=1
def vartest(a):
    a=a+1
vartest(a)
print(a)

정수 1 은 변하지 않는다. global frames 가 a=1 이기 때문에 print 하였을때 그대로 1 을 출력함 

  • mutable_ 리스트, 집합,딕셔너리 

 

a=[1,2,3]

def vartest(a):

    a=a.append(4)

vartest(a)

print(a)

  • 사용자의 입력과 출력 

input 함수를 사용할때 아래 출력값에 입력할수있게 생김 

number=input("숫자를 입력하세요:")

print(number)

출력값에 123을 침 

  • 파일 읽고 쓰기 

#파일 생성하기 

f=open("새파일.txt",'w')

f.close()

파일 열기 모드 설명
r 읽기모드- 파일을 읽기만 할때 사용
w 쓰기모드- 파일에 내용을 쓸때 사용
a 추가모드- 파일의 마지막에 새로운 내용을 추가시킬때 사용

#파일생성하고 w 작성하기  

f=open("Ming.txt",'w')

for i in range(1,11):                 * i 라는 변수를 range (1,11)에서 하나씩 추출하여 date 에 적용하는 반복문

  date="%d번째 줄입니다.\n"%i

  f.write(date)                         *f.write 라는 함수를 이용하여 해당차일에 date 를 기재 함 

f.close()                                 *항상 저장하고 close 

1번째 줄입니다.
2번째 줄입니다.
3번째 줄입니다.
4번째 줄입니다.
5번째 줄입니다.
6번째 줄입니다.
7번째 줄입니다.
8번째 줄입니다.
9번째 줄입니다.
10번째 줄입니다.

 

#파일읽기

f=open("Ming.txt",'r')

line= f.readline()                  *맨 처음 라인을 가지고 올때 사용됨  

while line :                         *Ture 라는 뜻(반복문)

  print(line)                         

  line= f.readline()                 * 출력후 다시 반복문으로 가기전에 line에 그다음줄에 을 input 함 

f.close()

 

다른방법(readline) : 한줄 읽는 함수 그러므로 전체를 다 읽기 위해서 반복문

f=open("Ming.txt",'r')

while True:

  line=f.readline()  

  if not line: break

  print(line)

f.close()

 

다른방법2 (readlines) : 리스트 형대로 읽는 함수 그러므로 전체를 다 읽기 위해서 반복문

f=open("Ming.txt",'r')

lines=f.readlines() 

for line in lines:

  print(line)

f.close()

 

다른방법3(read) :통째로 다 읽는 함수

f=open("Ming.txt",'r')

line=f.read() 

print(line)

f.close()

 

 

with open("new.text",'w') as f:                       * 파일을 오픈한것을 닫는다 라는의미

 f.write("life is too short, you need python")     * 따러 f.close() 함수를 따로 안써 줘도됨 

'Coming > Python_왕초보' 카테고리의 다른 글

Python_클래스  (0) 2021.05.01
Python_immutable VS mutable  (0) 2021.04.29
Python_함수(feat. 들여쓰기)  (0) 2021.04.27
python_제어문(조건문, 반복문)  (0) 2021.04.16
Python_ 리스트 vs 튜플 (번외: 집합)  (0) 2021.04.11

함수의 구조 

 

def 함수명(매개변수):

    <수행할 문장1>

    <수행할 문장2>

     .......

    reture 리턴값

 

 

def sum(a,b):

    result = a+b

    return result * 정의만 한거임, print()를 넣어 줘야함 

print(sum(1,2))

3

 

#입력값이 없는 경우

def say():

   return 'hi'

print(say())

hi

 

#return출력값이 없음

def sum(a,b):

   print("%d,%d의 합은 %d입니다."%(a,b,a+b))

sum(1,2)

1,2의 합은 3입니다.

 

 

(feat. 들여쓰기)_ 이해잘안됐음

def sum_many(*args):

  sum=0

  for i in args:

    sum=sum+i

    return sum    *args 를 넣으면 몇개의 매개변수가 들어어온다고 정의 하지 않아도 됨 

print(sum_many(1,2,3))

 

1

 

def>for 때문에 def 가 끝이나면 함수도 끝이난다.

def 안에 있는 반복문은 return(들여쓰기2번) 값을 만나면 함수ㅇ가 끝이난다.

return 을 만났기 때문에 2,3 을 실행하지 않고1 만 실행후 끝이남.  

 

def sum_many(*args):

  sum=0

  for i in args:

    sum=sum+i

  return sum

print(sum_many(1,2,3))

 

6

 

return 값이 for 문안에 포함되어 있지 않기 때문에(들여쓰기 1번), for문 실행이 끝이난뒤 

return 값을 만났으므로 최종 6을 출력한다. 

 

 

# 출력값을 튜플 형태로 낼수 있음

def sum_and_mul(a,b):

  return a+b,a*b,a-b                        * return  값이 여러개 일경우

print(sum_and_mul(1,2))

 

(3, 2, -1)

 

def sum_and_mul(a,b):

  return a+b,a*b,a-b

print(sum_and_mul(1,2)[0])                *어떤 return 값을 출력 할지.인덱싱으로 []선택할수 있음

 

# 매개변수기본값을 설정 할수 있음 (주로기본값을 맨끝에 써야함)

def say_myself(name,old,man=True):

  print('나의 이름은%s 입니다.'%name)

  print('나이는%d살입니다.'%old)

  if man:

    print('남자입니다.')

  else:

    print('여자입니다'

say_myself("밍밍",90)

 

나의 이름은밍밍 입니다.

나이는90살입니다.

남자입니다.                    

 * input 에 man 을 True 값으로 기본값을 설정하였기 때문에 output 값에 따로 쓰지 않도 기본값인 True 나옴

만약 여자 인 False 값을 내고 싶다면,아래 와 같이 output에 False를 넣는다.

say_myself("밍밍",90,False)

 

#vartest

2를 출력하기 위한 또 다른 방법은,

a=1
def vartest():
  global a 
  a=a+1
vartest()
print(a)

2

 

#lambda (간단한 함수정의를 축약하여 표현할수 있는 함수)_ list 에 함수를 쓸수 있음 

 

#def add(a,b):

  #return a+b

#print(add(1,2)) * 값이 3이 된다, 이걸 아래와 같이 lambda 함수를 사용하여 간단하게 표현 가능함

 

add=lambda a,b:a+b

print(add(1,2))

3

 

#함수를 리스트 안에 넣은 예시

myList=[lambda a,b:a+b,lambda a,b:a*b]

print(myList[0](1,2))

3

 

제어문: 조건문과 반복문 

 

  • 조건문

조건문 _ if 문 

 

예시) 돈이 있으면 택시를 타고, 돈이 없으면 걸어간다

money=True

if money:

print("택시를 타고 간다")

else:

print("걸어간다")

택시를 타고 간다

 

money=False

if money:

     print("택시를 타고 간다")

else:

     print("걸어간다")

걸어간다

 

들여쓰기 ( 오류 주의 ) tab 을 꼭 맞춰 줘야함 

money=True

if money:

     print("택시를 타고 가라")

     print("aa")

else:

     print("걸어가라")

 

비교연사자 를 사용하여 Ture 와 False 로, 값을 낼수 있다 .

a=1

b=2

if a<b:

   print("택시를 타고 가라")

else:

   print("걸어가라")

택시를 타고 가라

 

예시 ) 만약 3000원 이상을 가지고 있으면 택시를 타고 없으면 걸어 가라

소유=1500

if 소유>3000:

   print('택시를 타고가라')

else:

   print('걸어가라')

걸어가라

 

조건문에 : and, or, not 을 사용 할수 있다.

 

소유=1500

card=1 * 1은 ture. 

if 소유>3000 and card: * 다시말하여 if False and true 경우

   print('택시를 타고가라')

else:

   print('걸어가라')

걸어가라 * 하나만 ture 인경우는 false 의 값이 산출됨 = 모두 ture 경우만  true의 값으로 산출가능 

 

 

소유=1500

card=1

if 소유>3000 or card: * 다시말하여 if False or True

   print('택시를 타고가라')

else:

   print('걸어가라')

택시를 타고가라 * 하나만 ture 인경우는 true 의 값이 산출됨

 

card=1

if not card:* not 을 붙이면 Ture 였던것은 Fales 로 변경 즉, 반대의 성격을 가지게 됨 

    print('택시를 타고가라'

else:

    print('걸어가라') * False 로 결과값이 산출됨

 

추가 조건 문을 달고 싶은땐, elif  사용

pocket=['paper','cellphone']

card= True

if 'money'in pocket:

  pass

elif card:

  print("택시를 타고가라")

else:

  print('카드를 꺼내라')

 

택시를 타고가라

 

조건문을 간결 하게 아래 와 같이 작성 할수있다

score=70

message="success" if score >= 70 else"failure"

print(message)

 

먼저, 성공일때의 값을 먼저 쓴후, 조건 부를 써문다, if + else

 

 

  • 반복문

나무를 열번 찍는다. 열번 이하일때 까지 계속 반복하는 것!

 

while <조건문> :   <수행할문장1>

  <수행할문장2>

  <수행할문장3>

.....

treeHit=0

while treeHit<10:

  treeHit= treeHit+1

  print('나무를 %d번 찍었습니다.'%treeHit)

  if treeHit==10:

     print("나무가 넘어갑니다.")

 

나무를 1번 찍었습니다.

나무를 2번 찍었습니다.

나무를 3번 찍었습니다.

나무를 4번 찍었습니다.

나무를 5번 찍었습니다.

나무를 6번 찍었습니다.

나무를 7번 찍었습니다.

나무를 8번 찍었습니다.

나무를 9번 찍었습니다.

나무를 10번 찍었습니다.

나무가 넘어갑니다.

 

continue : while 문을 실할하다가 밑의 구문을 실행하지않고 다시 while 구문 반복

 

a=0

while a<10:

   a=a+1

   if a%2==0:

      continue

   print(a)

 

for 문

for 문 의 기본 구조 

for 변수 in 리스트 (또는 튜플, 문자열):

   수행할 문장1

   수행할 문장2

   ...........

 

test_list=['one','two','three']

for i in test_list:

   print(i)

 

a=[(1,2),(3,4),(5,6)]

for (frist,last) in a:

   print(frist+last)

3

7

11

 

marks=[90,25,67,45,80]

number=0

for mark in marks:

    number=number+1

    if mark >=60:

         print('%d번째 학생은 합격입니다'%number)

    else:

         print('%d번째 학생은 불합격입니다'%number)

 

1번째 학생은 합격입니다

2번째 학생은 불합격입니다

3번째 학생은 합격입니다

4번째 학생은 불합격입니다

5번째 학생은 합격입니다

 

marks=[90,25,67,45,80]

number=0

for mark in marks:

   number=number+1

   if mark<60: continue 

      print('%d 번 학생 축하합니다. 합격입니다'%number)

 

1 번 학생 축하합니다. 합격입니다

3 번 학생 축하합니다. 합격입니다

5 번 학생 축하합니다. 합격입니다

 

# for 와 함께 자주 사용 하는 range함수,

# range (1,11) 뜻은 1 이상 11 미만

sum=0

for i in range(1,11):

    sum=sum+i

print(sum)

 

55

 

#구구단 실행해보기

for i in range(2,10):

    for j in range(1,10):

         print(i*j,end=' ')

    print(' ')

 

2 4 6 8 10 12 14 16 18

3 6 9 12 15 18 21 24 27

4 8 12 16 20 24 28 32 36

5 10 15 20 25 30 35 40 45

6 12 18 24 30 36 42 48 54

7 14 21 28 35 42 49 56 63

8 16 24 32 40 48 56 64 72

9 18 27 36 45 54 63 72 81

파이썬 기본 프로그래밍 의 기초 자료형 중 중요하고 자주 쓰는(?) 것 이라고 한다. 

모든것들을 기재 할수가 없으니 이런것들이 있다 인지 후, 흥미로운 것들만 기재 해보자!

 

먼저,  

 

  • 리스트형

key point: 중복가능,

 

리스트를 만들때에는 기본 [] 으로 감싸 주고 요솟값을 ,로 구분 함

 

>>> a =[1,2,3,4,5,6,7,8,9,0]

>>> a= [1,2,a,c,d]

 

a=[1,2,3,"a","b","c"]

print(a)

[1, 2, 3, 'a', 'b', 'c']

# 리스트 인덱싱 

a[1:4]

[2, 3, 'a']

a[0]+a[2]

4

 

리스트 안에 또다른 리스트를 추가 하는 작업을 해보자 

a=[1,2,['a','b',['life','is']]]

이중에서  'life' 를 추출 하기 위하여서 아래 와같이 입력 

a[2][2][0]

 

리스트에서 슬라이싱 기법 사용 하기

a=[1,2,3,4,5] 2,3 만 리스트 하기 

a[1:3]

[2, 3]

 

  • 튜플 = ()로 감쌈, 고정 , 변경 불가

튜플은 삭제 할수 없음  <-> 리스트는 가능 

 

t1= (1,2,'a','b')

del t1[0]

TypeError: 'tuple' object doesn't support item deletion

 

더하기

t1= (1,2,3,4)

t2=(4,5)

print=(t1+t2)

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

 

곱하기도 가능 (단, 숫자는 변하지 않음)

a=(1,2,3)

a=a*3

print(a)

(1,2,3,1,2,3,1,2,3)

 

  • 딕셔너리 (key 통하여 value 있어야함! ) 

dic={'name':'eric', 'age':'25'}

print(dic['name'])

eric

 

딕션너리 쌍 추가하기

a={1;"a"}

a['name']="익명"

 Key             value   를 추가 하면 ,

print(a)

{1: 'a', 'name': '익명'}

 

a={1;"a"}

del a[1]

 

a={1:'a',1:'b'}

print(a)

{1: 'b'} 마지막 키만 남음, key값은 중복이 될수 없음 

 

a={1:'밍밍이',2:'또또',3:'안나'}

print(a.keys())

dict_keys([1, 2, 3]) 키만 따로 뽑기 

print(a.values())

ict_values(['밍밍이', '또또', '안나']) value 만 따로 뽑기 

print(a.items())

dict_items([(1, '밍밍이'), (2, '또또'), (3, '안나')])

 

print(a.get(1))  *1의 value 값을 찾을수 있지만, 없는 value의 값을 찾을때 유용 하게 쓰임 

밍밍이

print(a.get(4)

None

print(a.get(4,"없음")) * 4라는 값이 없을때, " 없음" 으로 리턴해라,

없음

 

print(4 in a) * in 이라는 명령어로 ture/false 결과를 낼수 있다 

False

print(1 in a)

Ture

 

 

  • 집합 ( 집합은 원소가 고유 하다, 리스크형 경우 같은 원소를 닮을수 있지만, 집합은 중록 불가, 원소의 순서가 없다)

1s= set([1,2,3]) or 1s={1,2,3}

집합은 중복되는 값을 뺄때 많이 사용 된다 

ㅣ=[1,2,2,2,2,3,4]

newlist=list(set(1)) * l 리스트를 set 으로 하여 중복을 제외후, 다시 list 로 변경

[1, 2, 3]

 

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

s2={4,5,6,7,8,9}

교집합 구하는방법

print(s1&s2)

{4,5,6}

print(s1.intersection(s2))

{4,5,6}

 

합집합구하는방법

print(s1|s2)

{1, 2, 3, 4, 5, 6, 7, 8, 9}

print(s1.union(s2))

{1, 2, 3, 4, 5, 6, 7, 8, 9}

 

집합에 원소를 추가 하는 방법

s1={1,2,3,4,5,6}

s1.add(7) * 해당 명령문을 추가 함므로써, s1 에 7 이 추가 됨

print(s1)

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

 

s1={1,2,3,4,5,6}

s1.update([7,8,9,]) *여러개의 원소를 추가 할때 update 명령문 사용후 안에 []리스트 추가

print(s1)

{1, 2, 3, 4, 5, 6, 7, 8, 9}

나의 첫 파이썬 입문은 조코딩과 함께하였다. 

 

프로그래밍의 기포, 자료형을 배웠다. 아래 배운것을 정리해보자!

 

그게 자료형에는 아래와 같이 것들이 있다. 

  1. 숫자형
  2. 문자열 자료형
  3. 리스트자료형 
  4. 튜플자료형
  5. 딕셔너리 자료형 
  6. 집합자료형
  7. 자료형 
  8. 자료형 값 을 저장하는 공간, 변수 
  • 숫자형 : 정수형, 실수형, 8진수, 16진수 

정수형: 말그래로의 정수를 뜻하는것(양수, 0, 음수)

eg. >>>123, >>>-123, >>> 0

 

실수형: 소수점을 포함한 숫자를 뜻하는것

eg. >>>a=4.24e10, >>>1.543 

 

8진수 & 16진수: (딱히 사용하지 않는 다고 함)

 

사칙연산: 아주쉽다... python + enter 로 시작! 

곱하기= *

나누기=/ 

 

나눗셈 후 나머지를 반환 하는 % 연산자 (약간 생소 했던것... )

eg, >>>4%5 --->4 (나눌수 없으니 남은수 4 ) 

 

나눗셈 후 몫을 반환 하는 // 연산자 (이것도 생소했음.. )

eg, >>>7//4 -->1

>>>4//7--->0 

Q. 14 를 3 으로 나누었을때 몫과 나머지 값은 ? 

2. 문자열 자료형 

 

그게 문자로 만들수 있는 따옴표 들은 크게 4 가지 가 있다 

"hello world" 

'hello world'

"""Hello world"""

'''hello world''' 

 

2.1 문자열 안에 작은 따움표나 큰 따옴표를 포함 하고 싶을때를 위해서!! 

mingming is awesome 과 mingming's awesome 을 예시로 적용 하면 아래와 같다 

 

a= "mingming is awesome"

print(a)

mingming is awesome

a= "mingming's is awesome"

참고: 문자형중 " 큰따움표 안에 ' 작은 따움표는 python이 인식하지만, 반대로 ' 작은 따움표 안에 " 표는 인식 하지 못한다. 

 

2.2 백슬러시(\)를 사용 하여 작은 따움표(')와 큰 따옴푬(")를 문자열에 포함 시키기

 

come back  

 

 

+ Recent posts