문자열 관련 함수 text1 = "a b c d e" text2 = "1,2,3,4,5" len print(len(text1)) split # 구분자를 직접 정할 수 있습니다. list_text2 = text2.split(',') print(list_text2) join text4 = ", ".join(list_text2) print(text4) 리스트 자료형 함수 : [1,2,3,4,5] //count (찾는 요소) mylist = [1, 1, 1, 2, 3] mylist.count(1) //split and index lyrics = "낙엽을,닮은,너의,눈동자를,나는,정말,정말,좋아했었어,가을을,닮은,너의,목소리를,나는,아직,아직,잊지,못했어,같이,걸으면서,들었던,낙엽,소리가,내,귓가에,들려오는,것만,같아,함께,앉아" mylist = lyrics.split(",") print(mylist[45]) //split and join my_str = "beetea" var1 = my_str.split('e') my_list = ["Seeing", "is", "Believing"] var2 = " ".join(my_list) //환상의 나라로 : 대기시간 짧은 것 부터 주되 인덱스 2번은 무조건 먼저 탈 예정. def neverland (queue_list) : pop_data = queue_list.pop(2) queue_list.sort() queue_list.insert(0, pop_data) return queue_list # 확인을 위한 코드입니다. # 대기시간이 담긴 리스트 queue를 자유롭게 수정해보세요! queue = [30, 10, 20, 50, 40, 60] print(neverland(queue)) 튜플 자료형 함수 : (1,2,3) //튜플은 리스트와 달리 정적 문자열로 변경이 불가능함. //()로 선언이 됨. //인덱스 접근 my_tuple = (1,2,3,4,5) var1 = my_tuple[2] var2 = my_tuple[1:4] print(var1) => 3 print(var1) => (2,3,4) 딕셔너리 자료형 함수 : {"key" : "value", } //키를 통한 값에 접근 dictionary = {'name' : 'Michael', 'age' : 10} dictionary['name'] //값 추가 및 삭제 my_dict = {"사과" : "apple", "바나나" : "banana", "당근" : "carrot"} var1 = my_dict["사과"] my_dict.pop("당근") my_dict["체리"] = "cherry" //한국어 번역 사전 cvs = ["Bello", "Bello", "Tulaliloo_ti_amo", "Tank_yu", "Poopaye", "Poopaye"] # Minionese와 한국어가 담긴 miniWord 딕셔너리를 만드세요. miniWord = {"Bello" : "안녕", "Poopaye" : "잘가", "Tank_yu" : "고마워","Tulaliloo_ti_amo": "우린 너를 사랑해"} for i in cvs: print(miniWord[i] ) //비밀번호 생성함 수 # 비밀번호를 만들어주는 함수 yoonHa()를 만들어봅시다. def yoonHa(nums) : my_dict = {4 : "love", 8 : "smile", 6 : "kiss"} my_str = "" for i in nums: my_str += my_dict[int(i)] return my_str # 채점을 위한 코드입니다. 이를 수정하지 마세요! nums = input() print(yoonHa(nums)) if 구문 if if-elif if-elif-else : if submit > answer: print("정답보다 더 큰 수를 입력했습니다.") elif submit < answer: print("정답보다 더 작은 수를 입력했습니다.") elif submit == answer: print("정답!") else : assert(0) for 구문 //문자열 접근 mix = "쌀씰쌀쌀" for i in mix //지정된 리스트를 통한 생성 for i in [1, 2, 3] //range(처음,끝)을 통한 생성 : 1, 2, 3, 4, 5 for i range (1, 6) for i in range(1, 20): print ("19 * " + str(i) + " = " + str(19*i)) //range(개수)를 통합 생성 : 0, 1, 2, 3, 4를 반환 for i in range (5) : while 구문 //조건문을 통한 생성 while i<11: print(i) i = i + 1 //별자리 개수 출력 i = 1 my_count = int(input()) while i <= my_count : print("*" * i) i = i + 1 if (i > 100) : break //평균을 구하는 프로그램 i = 0 # exception handling myGrade = int(input()) myGrades = [] while myGrade != 0 : myGrades.append(myGrade) myGrade = int(input()) # exception handling i = i + 1 if (i > 100): break # print the results avg = sum(myGrades) / len(myGrades) print (avg) 사용자 지정함수 def return def plus_print(a, b): print (a+b) #a+b를 반환! def times_return(a, b): return a*b plus_print(3, 4) #반환값 7을 var1에 대입 print (times_return(3, 4)) 모듈함수 import : 객체 지향 모듈을 "통째로 가져옴". 함수 호출 시 "객체 지향 함수 접근 형태"로 호출 필요 import numpy as np print(np.arrange(0,10)) //cal 모듈 불러오기 import cal var1 = cal.modelName var2 = cal.plus(3, 4) var3 = cal.minus(7, 2) print(var1, var2, var3) ## 변수의 값을 확인하는 출력문입니다. //random 모듈 불러오기 import random random.randrange(1,11) //math 모듈 불러오기 import math print(math.log(5, 2) + math.log(4/5,2)) print(math.pi) //로또 추첨기, random 모듈을 불러와서 함수 호출 import random lotto = list() while True: number_input = random.randrange(1, 45) if (number_input in lotto) : pass else : lotto.append(number_input) if (len(lotto) >= 6) : break lotto.sort() print (lotto) from - import : 모듈안의 특정 "함수"를 사용하고 싶을 때 from numpy import arrange print(arrange(0,10)) //user 패키지 math 모듈에서 log 함수만 불러올 떄 from user.math import log //randrange는 함수로 불러오고, math는 모듈로 불러오는 법 from random import randrange import math var1 = randrange(1,11) var2 = math.log(5184,72) print (var1,var2) //urllib 에서 request 함수 사용하기 from urllib import request url = 'https://en.wikipedia.org/wiki/Lorem_ipsum' # Specify the URL you want to fetch response = request.urlopen(url) # Use urllib to open the URL data = response.read() # Read the content of the response content = data.decode('utf-8') # Decode the bytes to a string print(content) # Print the content response.close() # It's a good practice to close the response
파이썬 자료형¶
변수¶
값을 저장하는 메모리 공간
- 변수 이름과 값을 할당하여 생성한다. ex) 변수이름 = 값
- 변수 이름을 통해 변수에 저장된 값을 사용할 수 있다.
- 프로그램 실행 동안, 몇번이고 값이 바뀔 수 있다.
In [1]:
print("안녕하세요.") # 출력문, print('')안에 문자열을 넣어서 출력
a = 10 # 변수 a에 10의 값을 저장.
print(a) # 변수 a의 값을 출력
a = 20 # 변수 a에 20의 값을 저장(기존 10의 값이 20으로 바뀜)
print(a)
a = 30 # 변수 a에 30의 값을 저장(기존 20의 값이 30으로 바뀜)
print(a)
숫자형 자료형¶
자료형 : 변수에 저장되는 데이터 형식
정수형(int)
- 음의 정수, 0, 자연수 등 정수 값을 나타내는 자료형.
- ex) -5, -122, 0, 3, 125
실수형(float)
- 소수점으로 표현되는 모든 숫자 값을 나타내는 자료형
- ex) -5.0, -1.2345, 0.0, 3.14
In [2]:
# 변수가 자료형을 스스로 판단하여 지정해준다.
# type() 함수를 사용하여 변수의 자료형을 확인할 수 있다.
a = 10
b = 10.123
c = 0
d = 0.0
print(a, b, c, d)
print(type(a)) # 변수 a의 자료형을 확인하고, 출력한다.
print(type(b))
print(type(c))
print(type(d))
In [3]:
a = 10
b = 5
result = a + b # result라는 변수에 a(10) + b(5)의 값을 저장한다.
print(result)
result = a - b # result라는 변수에 a(10) - b(5)의 값을 저장한다.
print(result)
result = a * b # result라는 변수에 a(10) * b(5)의 값을 저장한다.
print(result)
# 나눗셈 연산의 결과는 반드시 실수형으로 저장된다.
result = a / b # result라는 변수에 a(10) / b(5)의 값을 저장한다.
print(result)
result = a // b # result라는 변수에 a(10) // b(5)의 값을 저장한다.
print(result)
result = a % b # result라는 변수에 a(10) % b(5)의 값을 저장한다.
print(result)
result = a ** b # result라는 변수에 a(10) ** b(5)의 값을 저장한다.
print(result)
result = 2 + 3 * 4 # 14
print(result)
# 괄호를 통한 연산자 우선순위 변경
result = (2 + 3) * 4 # 20
print(result)
In [4]:
# #으로 시작되는 문장은 한줄짜리 주석입니다.
"""
큰따옴표 또는 작은따옴표 3개로
묶인 문장은 여러 줄 짜리 주석입니다.
"""
# 문자열 안에 작은따옴표('')를 사용하고 싶을 때, 큰따옴표로("") 문자열 구성
text = '누구는 말했다. "너 자신을 알라."'
# 문자열 안에 큰따옴표("")를 사용하고 싶을 때, 작은따옴표로('') 문자열 구성
# ''' '''로 씌워진 문자열은 줄바꿈, '', ""등 모든 형식을 그대로 표현할 수 있다.
text1 = '''안녕
하세요'''
print(text)
print(text1)
문자열 연산¶
문자열은 덧셈 연산과 곱셈 연산 사용이 가능하다.
- 덧셈 : 문자열+문자열 -> 문자열이 하나로 이어진다.
- 곱셈 : 문자열*숫자(반복횟수) -> 문자열이 숫자만큼 반복된다.
In [5]:
text1 = "python "
text2 = "is good"
# 문자열 합치기
text = text1 + text2
print(text)
# 문자열 반복
text3 = text1 * 5
print(text3)
print('-'*50)
print('*'*50)
print('='*50)
문자열 인덱싱¶
문자열은 문자 하나하나 나누어, 개별적으로 접근하는 것.
문자열에는 자동으로 인덱스(순서)가 배정되어 있다.
- [p][y][t][h][o][n]
- [0][1][2][3][4][5]
- [-4][-3]……[-1]
In [6]:
text = "python good"
a = text[0] # a = 'p'
aa = text[-11] # aa = 'p'
print(a, aa)
b = text[6] # b = ' '(공백)
print(b)
# 인덱싱과 덧셈연산을 사용해 'good' 추출
c = text[7]+text[8]+text[9]+text[10]
print(c)
문자열 슬라이싱¶
문자열을 원하는 지점부터 원하는 지점까지 분해하는 것.
- 변수명[첫번째 : 마지막]
- 첫번째 항목은 포함(이상), 마지막항목은 포함X(미만)
- 첫번째 항목을 공백으로 놓으면, 0번 인덱스부터 추출
- 마지막 항목을 공백으로 놓으면, 문자열 끝까지 추출
In [7]:
text = '20240313Sunny'
year = text[0:4]
month = text[4:6]
day = text[6:8]
weather = text[8:]
print(year+'년 '+month+'월 ' +day+'일')
print("날씨 : "+weather)
문자열 관련 함수¶
- len() : 문자열의 길이를 구하는 함수(시퀀스에 전체 적용 가능)
- split() : 문자열을 구분자를 통해 리스트로 분리하는 함수
- join() : 리스트를 합쳐서 문자열로 만들어주는 함수
In [8]:
text1 = "a b c d e"
text2 = "1,2,3,4,5"
# len() 함수를 통한 길이 구하기(공백도 길이에 포함)
print(len(text1))
# split() 리스트로 나누기
# 구분자가 없으면 공백을 기준으로 나눠진다.
list_text1 = text1.split()
print(list_text1)
# 구분자를 직접 정할 수 있습니다.
list_text2 = text2.split(',')
print(list_text2)
# join()함수로 리스트를 문자열로 합치기
text3 = " ".join(list_text1)
print(text3)
text4 = ", ".join(list_text2)
print(text4)
리스트 자료형(list)¶
모든 종류의 자료형을 묶어서 사용할 수 있는 자료형의 묶음.
- list = [1, “문자열”, -1.5, [1, 2, 3]]
- 각각의 원소는 콤마(,)로 구분이 된다.
- 리스트 안에 리스트도 들어갈 수 있다.
In [9]:
# 빈 리스트 생성
a_list = list()
# 리스트 직접 선언
b_list = [1, "문자열", -1.5, [1, 2, 3]]
# 리스트 복사
c_list = list(b_list)
print(a_list)
print(b_list)
print(c_list)
리스트 연산¶
- 덧셈 : 리스트+리스트 -> 리스트가 하나로 합쳐진다.
- 곱셈 : 리스트*숫자 -> 곱하는 수만큼 리스트가 반복된다.
In [10]:
a_list = [1, 2, 3]
b_list = [4, 5, 6]
# 리스트 덧셈
c_list = b_list + a_list
print(c_list)
# 리스트 곱셈
print(a_list*5)
In [11]:
a_list = [1, 2, 3, "안녕하세요", [4, 5, 6]]
print(a_list[3])
# 인덱싱을 중첩해서 사용할 수 있다.
print(a_list[3][2])
print(a_list[4][0])
# 슬라이싱도 문자열과 동일하게 사용할 수 있다
print(a_list[1:4])
리스트 관련 함수¶
- append(): 리스트의 맨 뒤에 요소 추가
- insert(): 원하는 위치에 요소 삽입하기
- remove(): 리스트 내에 존재하는 첫 번째 요소 삭제하기
- sort(): 리스트 오름차순(사전순) 정렬하기
- pop(): 리스트 원하는 위치에 있는 요소 제거 및 반환하기
- count(): 요소의 개수 세기
In [12]:
a = [1, 2, 3, 4, 6]
# 리스트 수정(원하는 인덱스에 접근하여, 값 대입)
a[4] = 5
print(a)
# del 키워드를 통한 리스트 원소 삭제
del a[0]
print(a)
# 슬라이싱을 이용해서 여러 요소를 한 번에 삭제할 수 있다.
del a[0:2]
print(a)
# append 함수로 맨 뒤에 요소 추가
# append 한 번에 하나의 요소만 추가가 가능하다.
a.append(6)
print(a)
# insert 함수로 원하는 위치에 원하는 요소 추가
# list.insert(위치, 값)
a.insert(0, 3)
print(a)
In [13]:
# remove() : 리스트의 원하는 요소(값) 제거
a = [1, 2, 3, 1, 5]
print(a)
# 중복된 값이 있을 때, 첫 번째 값만 제거한다.
a.remove(1)
print(a)
# pop() 원하는 위치에 있는 요소를 제거 및 반환.
return_a = a.pop(2)
print(a)
print(return_a)
In [14]:
# count() : 리스트에 있는 원하는 요소의 개수를 세는 함수
a = [1, 2, 3, 3, 3, 2, 5, 1, 2]
# list.count(값)
print(a.count(1))
b = [1, 5, 2, 3, 4, 9, 7]
c = ['a', 'y', 'e', 'k', 'd']
# sort() 리스트 내부를 오름차순 또는 사전순으로 정렬
b.sort()
print(b)
c.sort()
print(c)
# reverse() : 리스트를 거꾸로 뒤집는 함수
b.reverse()
print(b)
c.reverse()
print(c)
In [15]:
# 빈 튜플 생성
t1 = ()
# 요소가 하나뿐인 튜플 생성
t2 = (1,)
# 요소가 여러 개인 튜플 생성
t3 = (1, 2, 3, 4, 5)
t4 = 'a', 'b', 'c'
print(t1)
print(t2)
print(t3)
print(t4)
# 1. 튜플 인덱싱 & 슬라이싱
# 2, 덧셈연산, 곱셈연산
# 3. len, count 함수
# 위와 같은 기능은 사용할 수 있다.
딕셔너리 자료형¶
사전, Key(낱말)와 Value(뜻)를 한 쌍으로 가지는 자료형.
dictionary = {key1:value1, key2:value2}
- 순차적으로 접근하지 않고, 오직 Key를 통해서 Value에 접근.
- Key값은 고유한 값이므로, 중복되는 Key를 사용하면 안됨.
- Key값은 변경 불가능하여, 리스트를 Key값으로 사용할 수 없다.
In [16]:
dic = {'사과': 'apple', '바나나': 'banana', '메론': 'melon'}
dic1 = {1: 'hello', 2:[1, 2, 3], '3':5, (1, 2, 3): 7}
print(dic)
print(dic1)
In [17]:
# 딕셔너리 생성
dic = {1:"one", 2:"two"}
print(dic)
# 딕셔너리 추가, 변수명[key] = value
dic[3] = "three"
print(dic)
# 딕셔너리 삭제, del 변수명[key]
del dic[2]
print(dic)
# 딕셔너리에서 Key값을 통해 Value에 접근
print(dic[1])
# Key값이 중복되면 마지막에 생성된 Key를 제외한 다른 key값이 무시된다.
test_dic = {1:'one', 2:'two', 2:'둘', 3:'three', 3:"셋", 3:"삼"}
print(test_dic)
# 딕셔너리에서 in 연산자는 key값을 통해서만 접근이 가능하다.
dic2 = {'사과': 'apple', '바나나': 'banana', '메론': 'melon'}
# 딕셔너리에서 in 연산자는 key 값이 있는지 없는지 검사합니다.
print('사과' in dic2)
print('apple' in dic2)
# 딕셔너리의 Key 리스트 추출
print(dic2.keys())
# 딕셔너리의 value 리스트 추출
print(dic2.values())
# 딕셔너리의 (key, value) 리스트
print(dic2.items())