Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

보안교과서

[sesac 성동캠퍼스 1기] 11/01 인프라 활용을 위한 파이썬프로그래밍 교육 3일차 본문

SK쉴더스

[sesac 성동캠퍼스 1기] 11/01 인프라 활용을 위한 파이썬프로그래밍 교육 3일차

dogeconfig 2023. 11. 1. 17:52

Chapter 7

리스트, 듀플, 딕셔너리

 

1. 리스트 

여러 개 변수의 사용 

num1 ~ num4까지 4개의 정수형 변수 선언하고 합계 출력 할 떄 

리스트 이름 = [num1, num2, num3,....]

 

numList = [10,20,30,40]   # 숫자 항상 다 써야하나 ...

 

numList = []

numList =[10,20,30]

numList = ['파이썬', '자바']

numList = [10,20,'아이폰']  ==> 이건 자주 쓰이지 않는다고 한다.

 

numList = [] # 형태 부여?

numList.append(0)
numList.append(0)
numList.append(0)
numList.append(0)
print(numList)
[0, 0, 0, 0]

 

 for문을 활용하여 리스트에 0을 4번 추가한다.

>>> numList = []

>>> for i in range(0, 4) :

           numList.append(0)

>>> len(numList)

4

 

첨자가 음수인 경우 , :을 써서 범위를 지정하는 경우

numList = [10,20,30,40]일떄       numList[시작 첨자 : 끝 첨자+1]    numList[0,1,2,3]

numList[-2] = 30          numList[0:3]   = [10,20,30]     numList[2:] = [30,40 ]

numList[-1] = 40           numList[2:4] = [30,40]      numList[:2] = [10,20 ]

오늘의 명언 출력하기 

 

import random
goodsay = ["멍멍이",
"강아지",
"고양이",
"킹냥이"]

#랜덤하게 명언의추출하기 위해 randint() 함수를 사용한다.
now = random.randint(0,len(goodsay)-1)
print("오늘의 명언 ==>", goodsay[now])

이 기능을 지금 알다니 ..

 

리스트값 변경하기

numList = [10, 20, 30]
numList[1] = 200
print(numList)
[10, 200, 30]
numList = [10,20,30]
numList[1:2] = [200,201]
print(numList)
#이러면 [10,200,201,30] 출력

append(값) : 맨 뒤에 값을 추가한다

insert(위치,값) : 정해진 위치에 값 삽입하기

numList = [10,20,30]
numList.insert(1,123)
print(numList)
[10,132,20,30]
# .insert(위치,넣는 숫자)
#그 위치에 추가하고 밀어낸다

del() 리스트의 항목 삭제 위치를 지정하는 것

numList = [10,20,30]
del(numList[1])
print(numList)
[10,30]

remove(지울 값) 값을 지정한다

numList = [10,20,30]
numList.remove(10)
print(numList)
[20,30]

#만약에 중복된 수이면 앞(0)자리 부터 지운다

pop() : 제일 뒤의 값을 뽑아내서 알려주고 삭제

numList = [10,20,30]
numList.pop()
30
print(numList)
[10,20]

count(찾을 값) : 찾고자 하는 값이 몇 개인지 개수를 세서 알려준다.

numList [10,20,30,10,10]
numList.count(10)
3

sort() : 오름차순으로 정리

sort(reverse = True) : 내림차순으로 정렬함 (?) 54321

numList = [10,20,30,40,50]
numList.sort(reverse=True)
#내림차순으로 정리
print(numList)
[50,40,30,20,10]
numList.sort()
#오름차순으로 정리
print(numList)
[10,20,30,40,50]

reverse() : 리스트의 마지막 인덱스 부터 위치 반대

numList = [10,20,30,50,40]
numList.reverse()
print(numList)
[40,50,30,20,10]

copy() : 복사 리스트를 새로운 리스트로 복사

numList = [10,20,30]
numList2 = numList.copy()
print(numList2)
[10,20,30]

 

 

2차원리스트

리스트이름[행][열]

numList2 = [[1,2,3,4],
            [5,6,7,8],
            [9,10,11,12]]
for i in range(0, 3) :
    for k in range (0, 4) :
        print(" ", numList2[i][k], end='')
    print("")
    ###
    1 2 3 4
    5 6 7 8
    9 10 11 12
    ###

 

chapter

튜플은 읽기 전용의 리스트라고 한다. 수정이 불가하다

#튜플은 소괄호를 생성하지만, 괄호가 없어도 무방하다
numTup1 = (10,20,30)
print(numTup1)
(10,20,30)

numTup2 = 10,20,30
print(numTup2)
(10, 20, 30)

#튜플의 항목이 한 개일 때 튜플 뒤에 콤마(,)를 붙여야 함
#numTup3, numTup4: 튜플이 아닌 일반 값
#numTup5, numTup6: 하나의 항목만 가진 튜플

numTup3 = (10)
print(numTup1)
10

numTup4 = 10
print(numTup2)
10

numTup5 = (10,)
>>> print(numTup3)
(10,)

위에 변수 설정 맞나..?? 틀린 것 같다고 한다.

튜플을 삭제하기 위해서는 del(튜플이름) 사용한다.

 

numTup1 = (10,20,30,40)
print(numTup1[0])
10
print(numTup1[0]+numTup1[1]+numTup1[2])
60
#튜플이름[인덱스] : 특정 항목에 접근하기
print(numTup1[1:3])
(20, 30)
print(numTup1[1:2])
(20,)
print(numTup1[2:4])
(30, 40)
print(numTup1[1:])
(20, 30, 40)
print(numTup1[:3])
(10, 20, 30)
print(numTup1[1:3])
(20, 30)

튜플 범위 접근하기
numTup1 = (10,20,30,40)
numTup2 = ('A','B')
print(numTup1 + numTup2)
(10,20,30,40,A,B)
print(numTup2 * 3)
('A','B','A','B','A','B')

튜플과 리스트는 서로 변환할 수 있습니다.

튜플-> 리스트->튜플

myTuple = (10,20,30)
#튜플 선언
myList = list(myTuple)
#튜플에서 리스트로 변환
myList.append(40)
#끝자리에 40추가
myTuple = tuple(myList)
#리스트에서 튜플로 변환 
print(myTuple)
(10,20,30,40)

딕셔너리 

단어 의미 그대로 '영어사전'과 같은 구조 

딕셔너리는 2개의 쌍이 하나로 묶이는 자료구조를 의미한다.

{}로 묶여있음

키 (key), 값(value)의 쌍으로 이루어져있다

 

키(key)  : 단어

값(value) : 의미

myDict = {'사번':1000, '이름':'홍길동', '부서':'케이팝'}
print(myDict)
{'사번': 1000, '이름': '홍길동', '부서': '케이팝'}

딕셔너리변수 = { 키1:값1 , 키2:값2, 키3:값3,....}

 

만약 여기에  정보를 추가하기 위해서는 키와 값을 쌍으로 추가해야한다.

myDict = {'사번':1000, '이름':'홍길동', '부서':'케이팝'}
print(myDict)

myDict['연락처'] = '010-1111-1111'
print(myDict)

{'사번': 1000, '이름': '홍길동', '부서': '케이팝'}
{'사번': 1000, '이름': '홍길동', '부서': '케이팝', '연락처': '010-1111-1111'}

만약 기존에 키가 있는 경우에는 value 값만 변경이 된다.

myDict = {'사번':1000, '이름':'홍길동', '부서':'케이팝'}
print(myDict)

myDict['연락처'] = '010-1111-1111'
print(myDict)

myDict['연락처'] = '010-2222-2222'
print(myDict)

{'사번': 1000, '이름': '홍길동', '부서': '케이팝', '연락처': '010-1111-1111'}
{'사번': 1000, '이름': '홍길동', '부서': '케이팝', '연락처': '010-2222-2222'}

고로 딕셔너리의 키는 중복되지 않고 유일하다 .

그리고 오류 발생하지 않고 마지막 값이 적용되어 생성된다.

그러면 (key)키, (value)값을 제거하는 방법은? 

del(empDict['부서'])
print(empDict)
{'사번': 1000, '이름': '홍길동', '연락처': '010-1111-2222'}
len(empDict)
3

#키를 이용해 값을 구해보자
empDict = {'사번' : 100 ,'이름' : 홍길동,'부서' : 인사과}
print(empDcit['사번'])
100

만약 딕셔너리의 모든 키만 뽑고자 한다면 

empDict.keys()   , myDict.keys()

keys 주의하자  

간단하게 해당 키가 있는지 확인하고 싶으면 

print('이름' in empDict)를 입력해보자 .

 

for문을 활용하여  딕셔너리에 저장된 것을 한 건씩 출력할 수 있다

for key in ['사번','이름','부서'] : 
 print( key, empDict[key])
 
 사번 1000
 이름 홍길동
 부서 케이팝

 

chapter8 

함수를 이용한 고급 프로그래밍 

무엇을 넣으면 그것이 처리되어 다시 어떤 것을 돌려주는 기능을  말함

 

함수이름() 

 

print("난생처음 파이썬")   #반환값은 없

난생처음 파이썬

 

변수 이름 = 함수이름()

num = int("1234")            #반환값이 있

print(num)

1234

 

사용자 정의 함수가 필요한 이유 밑의 코드를

print("A님. 두 숫자를 입력하세요")
num1 = int(input("정수1 ==>"))
num2 = int(input("정수2 ==>"))
hap = num1 + num2
print("결과 :", hap)
print("B님. 두 숫자를 입력하세요")
num1 = int(input("정수1 ==>"))
num2 = int(input("정수2 ==>"))
hap = num1 + num2
print("결과 :", hap)
print("C님. 두 숫자를 입력하세요")
num1 = int(input("정수1 ==>"))
num2 = int(input("정수2 ==>"))
hap = num1 + num2
print("결과 :", hap)

# 함수로 구현한다

def hapFunc() :
num1 = int(input("정수1 ==>"))
num2 = int(input("정수2 ==>"))
return num1 + num2
print("A님. 두 숫자를 입력하세요")
hap = hapFunc()
print("결과 :", hap)
print("B님. 두 숫자를 입력하세요")
hap = hapFunc()
print("결과 :", hap)
print("C님. 두 숫자를 입력하세요")
hap = hapFunc()
print("결과 :", hap)

num1 = int(input("정수1 ==>"))
num2 = int(input("정수2 ==>"))
hap = num1 + num2 
들을

def hapFunc() :
num1 = int(input("정수1 ==>"))
num2 = int(input("정수2 ==>"))
return num1 + num2
으로 바꿈

 

plus() 함수 : 두 정수를 입력받아 두 정수의 합계를 반환하는 plus 

## 함수 정의 부분
def plus(v1,v2) :
    result = 0
    result = v1 + v2
    return result
## 전역변수 선언 부분
res = 0

## 메인 코드 부분 
res = plus(100,200)
print("100과 200의 plus() 함수 결과는", res)

프로그램의 틀 

##함수 정의 부분 

##전역변수 선언 부분

##메인(main) 코드 부

pag2 20 함수를 먼저 구현 

def my Calc(op, n1, n2):

result = 0

if op == "+":

    result = n1 + n2 

elif op == "-":

....

return result

 

 

opcode = input("입력:")

num1 = int(input("숫자1"))

num2 = int(input("숫자2"))

calc_result = myCalc(opcode, num1, num2)

print(num1, opcode, num2, "=", calc_result)

 

 

##함수 정의 부분
def para2_func(v1,v2) :
    result = 0
    result = v1 + v2
    return result

def para3_func(v1,v2,v3 ) :
    result = 0
    result = v1 + v2 + v3
    return result
## 전역변수 선언 부분
hap = 0

##메인 코드 부분
hap = para2_func(10,20)
print("매개변수 2개 함수 호출 결과 ==>", hap)
hap = para3_func(10,20,30)
print("매개변수 3개 함수 호출 결과 ==>", hap)

 

지역변수 말 그대로 한정된 지역에서만 사용되는 변수

전역변수 프로그램 전체에서 사용되는 변수

 

함수가 return 될 때까지 하고 함수 안에 정의된 것이 없으면 전역변수 

 

 

## 함수 정의 부분
def func1() :
a = 10 # 지역변수
print("func1()에서 a의 값 ", a)
def func2() :
print("func2()에서 a의 값 ", a)
## 전역변수 선언 부분
a = 20
## 메인 코드 부분
func1() ## a = 10 지역변수 
func2() ## a = 20 전역변수