Citizen Developer : Lecture : Python

Kakao Share

문자열 관련 함수
	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)
안녕하세요.
10
20
30

숫자형 자료형

자료형 : 변수에 저장되는 데이터 형식


정수형(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))
10 10.123 0 0.0
<class 'int'>
<class 'float'>
<class 'int'>
<class 'float'>

연산자

숫자형 자료형을 가공하기 위한 문자

  • 덧셈 : +
  • 뺄셈 : –
  • 곱셈 : *
  • 나눗셈 : /
  • 몫 : //
  • 나머지 : %
  • 제곱 : **

연산자 우선순위

  1. 제곱 연산자
  2. 곱셈, 나눗셈, 몫, 나머지
  3. 덧셈, 뺄셈
  4. 괄호()를 이용하여 연산자 우선순위를 변경할 수 있다.
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)
15
5
50
2.0
2
0
100000
14
20

문자열 자료형(str)

문자, 문자들의 집합으로 구성된 자료형.

작은따옴표(”)나, 큰따옴표(“”)로 묶어서 문자열을 생성할 수 있다.

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)
python is good
python python python python python 
--------------------------------------------------
**************************************************
==================================================

문자열 인덱싱

문자열은 문자 하나하나 나누어, 개별적으로 접근하는 것.

문자열에는 자동으로 인덱스(순서)가 배정되어 있다.

  • [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)
p p
 
good

문자열 슬라이싱

문자열을 원하는 지점부터 원하는 지점까지 분해하는 것.

  • 변수명[첫번째 : 마지막]
  • 첫번째 항목은 포함(이상), 마지막항목은 포함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)
2024년 03월 13일
날씨 : Sunny

문자열 관련 함수

  • 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)
9
['a', 'b', 'c', 'd', 'e']
['1', '2', '3', '4', '5']
a b c d e
1, 2, 3, 4, 5

리스트 자료형(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)
[]
[1, '문자열', -1.5, [1, 2, 3]]
[1, '문자열', -1.5, [1, 2, 3]]

리스트 연산

  • 덧셈 : 리스트+리스트 -> 리스트가 하나로 합쳐진다.
  • 곱셈 : 리스트*숫자 -> 곱하는 수만큼 리스트가 반복된다.
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)
[4, 5, 6, 1, 2, 3]
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

리스트 인덱싱 & 슬라이싱

리스트도 문자열과 유사하게 인덱싱 및 슬라이싱이 가능하다.

단, 리스트 내부에 있는 문자열이나, 리스트 내부의 리스트도 하나의 요소로 취급한다.

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])
안녕하세요
하
4
[2, 3, '안녕하세요']

리스트 관련 함수

  • 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)
[1, 2, 3, 4, 5]
[2, 3, 4, 5]
[4, 5]
[4, 5, 6]
[3, 4, 5, 6]
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)
[1, 2, 3, 1, 5]
[2, 3, 1, 5]
[2, 3, 5]
1
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)
2
[1, 2, 3, 4, 5, 7, 9]
['a', 'd', 'e', 'k', 'y']
[9, 7, 5, 4, 3, 2, 1]
['y', 'k', 'e', 'd', 'a']

튜플 자료형(tuple)

리스트와 마찬가지로, 모든 자료형을 담을 수 있는 자료형.

튜플은 한 번 생성하면, 변경이 불가능하다.

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 함수
# 위와 같은 기능은 사용할 수 있다.
()
(1,)
(1, 2, 3, 4, 5)
('a', 'b', 'c')

딕셔너리 자료형

사전, 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)
{'사과': 'apple', '바나나': 'banana', '메론': 'melon'}
{1: 'hello', 2: [1, 2, 3], '3': 5, (1, 2, 3): 7}

딕셔너리 추가 및 삭제

딕셔너리 쌍 추가

딕셔너리의 Key와 Value를 변수에 값을 넣듯이 그대로 대입한다.

  • 변수명[Key] = Value

딕셔너리 쌍 삭제

del 키워드를 사용하여 요소를 삭제한다.

  • del 변수명[Key]
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())
{1: 'one', 2: 'two'}
{1: 'one', 2: 'two', 3: 'three'}
{1: 'one', 3: 'three'}
one
{1: 'one', 2: '둘', 3: '삼'}
True
False
dict_keys(['사과', '바나나', '메론'])
dict_values(['apple', 'banana', 'melon'])
dict_items([('사과', 'apple'), ('바나나', 'banana'), ('메론', 'melon')])
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

카카오톡 채널 친구추가
0
Would love your thoughts, please comment.x
()
x