23.06.23 : Python

이준영·2023년 6월 23일
0
자료형
	객체(함수 / 메서드)
    
    단일
    	Boolean
        Numver
        String
        
    복합
    	List
        Set
        Tuple

Tuple

list와 비슷한 readonly 형식이라고 생각

기본 선언

tuple1 = ()
tuple2 = tuple()

print(type(tuple1))
print(type(tuple2))



보통 배열 형식을 띄나, 하나만 쓰면 그 자료형 가짐


tuple3 = (1, 2, 3)

print(tuple3)
print(tuple3[0])

#하나 있을 때는 그 자료형 타입 가짐
tuple41 = (1)

tuple42 = (1, )

print(type(tuple41))
print(type(tuple42))



tuple은 변경, 삭제할 수 없다.

데이터를 고정 시키고 보는 용도로 많이 사용함

del tuple3[0]
#tuple[0] = 10

print(tuple3)



다중 할당 가능

# 다중 할당

data1, data2 = (10, 20)
(data1, data2) = 10, 20
data1, data2 = 10, 20     <-- 모두 같음

print(data1, data2)



변수 값 교환

파이썬은 변수 간의 값 교환을 쉽게 할 수 있다

# 변수간의 값 교환

a = 3
b = 5

a, b = b, a

print('a : ', a, 'b : ' ,b)

2개 이상도 가능

a, b, c = 3, 5, 7

a, b, c = c, a, b

print('a : ', a, 'b : ' ,b, 'c : ', c)

값 바뀌어있는 것 확인



배열 사용

이런 식으로도 배열 사용 가능


[a, b] = [10, 20]
print(a, b)




dictionary

Json과 형태 비슷, Json 기준으로 만들어 놓음

기본 선언 / 사용

dict1 = {}      # set
dict2 = dict()

print(type(dict1))
print(type(dict2))

# map(key, value)
dict = {'name' : 'key', 'phone' : '01112345678'}
print(dict)

# index 아닌 key 값 집어넣어 value 확인
print(dict['name'])
print(dict.get('name'))  # 이렇게도 value 값 구하기 가능



값 추가 / 수정

# key 없으면 값 추가, key가 동일할 시, value 값 수정
dict['data1'] = 'value1'
dict['name'] = 'alice'

print(dict)



삭제

del dict['data1']

print(dict)



key , value 값 출력

dict = {'name' : 'key', 'phone' : '01112345678'}

print(dict.keys())    -> key값 배열 형식으로 출력
print(dict.values())   -> value 값 배열 형식으로 출력

keylists = list(dict.keys())    -> 변수에 키 값 대입, 인덱스로 뽑기 위함

print(keylists[0])

valuelists = list(dict.values()) -> 변수에 밸류 값 대입, 인덱스로 뽑기 위함

print(valuelists[0])




제어문

if

들여쓰기 주의해야함!!!!!

단순 if

실행 문장
if 조건:
	실행 문장
    

if ~ else

실행 문장
if 조건:
	실행 문장
    
else :
	실행 문장
    
실행문장    


if ~ else 사용

print('start')
money = False
if money:
    print('택시 타라')  
else :
    print('돈 없쪄')

print('end')

각각 True, False 실행한 것



### pass

실행 결과를 쓰지 않으면 오류가 나기 떄문에, 그 대신으로 pass를 써준다.


print('start')
money = True
if money:
    pass       -> 아무것도 안쓰면 오류남
else :
    print('돈 없쪄')

print('end')

아무것도 안 쓰면 나오는 오류



elif (else if)

파이썬에서는 else if를 elif라고 쓴다.

print('start')
hakjum = 90
if hakjum >= 90:
    print('A')
elif hakjum >= 80:
    print('B')
elif hakjum >= 70:
    print('C')
elif hakjum >= 60:
    print('D')
else :
    print('E')

print('end')



값의 존재 여부 (in)

if에서 조건을 줄 때 사용

# list / tuple / string
# 값의 존재 여부 (in)

pocket = ['paper', 'cellphone', 'money']

if 'money' in pocket :       --> pocket 안에 money가 있을 경우 실행
    print('택시 타라')
else :
    print('걸어 가') 




반복문 : for

Java의 향상된 for문 같이 사용

# list
# 시작과 끝

lists = ['one', 'two', 'three']
print(lists[0])
print(lists[1])
print(lists[2])

print('-' * 50)

for list in lists :
    print(list)
    
print('-' * 50)    
    
strings1 = 'hello'

for string1 in strings1 :
    print(string1)    



dictionary 타입 반복문 사용하기

dict = {'name' : 'key', 'phone' : '01112345678'}

for key in dict.keys() :
    print(key)   

for value in dict.values() :
    print(value)     
    
# 키 값 다 뽑기
for key, value in dict.items() :
    print(key, value)   



리스트 안 튜플 뽑기

lists = [ (1, 2), (3, 4), (5, 6) ]  # list안에 tuple 형식

for (first, last) in lists :
    print(first, last)



range()

()의 범위 출력


print(range(5))
print(range(0,5))

lists = list(range(0, 5))
print(lists)

for i in range(0, 5) :
    print(i, end=' ')

sum  = 0
for i in range(1, 11)  :
    sum = sum + i

print(sum)    

중첩 for

for i in range(1, 3) :
    for j in range(1, 3) :
        print( i, j)
    print('end')    



응용 : 첫 단어 대문자로 바꾸기

    # 대문자화
    name = input('이름을 입력하세요 : ')

    names = name.split(' ')

    for i in range(len(names)) :
        #print(names[i])
        names[i] = names[i][0].upper() + names[i][1:]
        print(names[i])

    result = ' '.join(names)
    print('결과 : ', result)



응용 : 주민등록 검사기

str = input('주민번호를 입력하세요 : ')
str = str.replace('-', '')

bits = [2, 3, 4, 5,6, 7, 8, 9, 2, 3, 4, 5]
sum = 0
for i in range(len(bits)) :
    sum += int(str[i]) * bits[i]

cnum = (11 - (sum % 11) ) % 10
lnum = int(str[-1])

if (cnum == lnum) :
    print('정확')
else :
    print('틀림')




while

예시

treeHit = 0
while treeHit < 10:
    treeHit = treeHit + 1
    print('나무를 %d번 찍었습니다' % treeHit)
    if treeHit == 10:
        print('나무 쓰러짐')



무한 루프, break

coffee = 10
money = 300
while money :
    print('money 300원 확인, coffee 여기있습니다.')
    coffee = coffee -1
    print('남은 커피의 양은 %d개 입니다' % coffee)
    if coffee == 0:
        print('커피가 다 떨어졌습니다. 판매를 중지합니다')
        break
        
---------------------------------------------------------------------------------------

coffee = 10
while True:
    money = int(input("돈을 넣어 주세요: "))
    if money == 300:
        print("커피를 줍니다.")
        coffee = coffee -1
    elif money > 300:
        print("거스름돈 %d를 주고 커피를 줍니다." % (money -300))
        coffee = coffee -1
    else:
        print("돈을 다시 돌려주고 커피를 주지 않습니다.")
        print("남은 커피의 양은 %d개 입니다." % coffee)
    if coffee == 0:
        print("커피가 다 떨어졌습니다. 판매를 중지 합니다.")
        break
        




break 와 continue

break

5에서 종료


print('시작')

for i in range(0, 10) :
    if i ==5 :
        break
    print(i)

print('끝')   


continue

5에서 처음으로 돌아감( 5 실행 x)

print('시작')

for i in range(0, 10) :
    if i ==5 :
        continue
    print(i)

print('끝')    




함수 : def

파이썬에서는 함수 생성 시에 def를 사용한다.

def func1():
    pass

def func2():
    print('func2 함수 호출')

def func3(a):
    print('func3 함수 호출 :', a)

def func4(a):
    print('func4 함수 호출 :', a)
    return a

func2()
func3(10)
print(func4(20))

func1() = 껍데기 만들고 호출 = 아무 것도 나오지 않음



영역

영역이 달라서 a1과 a2의 값은 다르게 나온다.



global 사용하기 ( 전역변수라고 생각)

print('시작')

a = 1
def func1():
    global a    --> 위의 a를 가져옴
    a = a+1      --> +1 하므로 맨 위의 a도 2
    print('a1 :', a)

func1()
print('a2 : ', a)

print('끝')



매개변수에 직접 값 지정하여 넣기



가변 인자 함수

*args 를 집어넣고 사용

def func( *args ):
	#print(type(args))   ---> tuple 형식으로 나온다
    #print(args)
    for arg in args :
        print(arg)

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

profile
끄적끄적

0개의 댓글