728x90
반응형
Collection : 여러개의 데이터를 저장할 수 있는 객체
list(리스트) : 배열의 형태. 인덱스 사용가능, []
tuple(튜플) : 상수화된 리스트. 변경불가 리스트, ()
dictionary(덱셔너리) : 자바의 Map.
(key, value) 쌍인 객체들. {}
set(셋) : 집합. 중복불가 {}
comprehension 방식으로 Collection 객체 생성
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 14 09:31:19 2022
@author: p011v
"""
'''
print(값) : 화면에 출력하기
print(값1, 값2 ...) : 값을 여러개 화면에 출력하기
print("{0:d}{1:2d}...".format(값1, 값2, ...)) : 형식문자 이용하여 출력
print("%2d, %3d" %(값1, 값2)) : 형식문자 이용하여 값을 여러개 출력
문자열 : 문자들의 모임. 인덱스(첨자)를 사용가능
"문자열"[시작인덱스:종료인덱스:증감값]
시작인덱스 생략시 : 0번부터 시작
종료인덱스 생략시 : 마지막 문자까지
증감값 생략시 : 1씩 증가
조건문 : if else, if elif else, True if 조건식 else False
반복문 : for 변수 in 범위, while 조건식
범위 : range(초기값, 종료값+1, 증감식)
break, continue
조건문, 반복문 : 들여쓰기 주의.
'''
########## 0. 문자열 함수
'''
len(문자열) : 문자열의 길이
문자열.count(문자) : 문자열에서 문자의 갯수 리턴
문자열.find(문자) : 문자열에서 문자의 위치 리턴. 문자가 없는 경우 -1 리턴
문자열.index(문자) : 문자열에서 문자의 위치 리턴. 문자가 없는 경우 오류 발생
'''
a = "hello"
# a문자열에서 l자의 갯수 출력하기
cnt = 0
# len(a) : a문자열의 길이
for i in range(0, len(a)) :
if a[i] == 'l' :
cnt += 1
print(a, '에서 l문자의 갯수:', cnt)
print(a, '에서 l문자의 갯수:', a.count('l')) #2
print(a, '에서 l문자의 갯수:', a.count('a')) #0
# a문자열에서 l자의 위치 출력하기
print(a, '에서 l문자의 위치:', a.find('l')) #2
print(a, '에서 l문자의 위치:', a.index('l')) #2
print(a, '에서 l문자의 위치:', a.find('l',3)) #3 : 3번 인덱스부터 몇번째에 있는지
print(a, '에서 l문자의 위치:', a.index('l',3)) #3 : 3번 인덱스부터 몇번째에 있는지
# a문자열에서 a자의 위치 출력하기
print(a, '에서 l문자의 위치:', a.find('a')) #-1 : 없음
print(a, '에서 l문자의 위치:', a.index('a')) #오류발생
# 문자열의 종류 알려주는 함수
str = "123"
str = "Aa123"
str = "Aa"
str = "AA"
str = "aa"
str = " "
if str.isdigit() :
print(str,": 숫자")
if str.isalpha() :
print(str,": 문자")
if str.isalnum() :
print(str,": 문자+숫자")
if str.isupper() :
print(str,": 대문자")
if str.islower() :
print(str,": 소문자")
if str.isspace() :
print(str,": 공백")
###########################################################
# Collection : 여러개의 데이터를 저장할 수 있는 객체
# list(리스트) : 배열의 형태. 인덱스 사용가능, []
# tuple(튜플) : 상수화된 리스트. 변경불가 리스트, ()
# dictionary(덱셔너리) : 자바의 Map.
# (key, value) 쌍인 객체들. {}
# set(셋) : 집합. 중복불가 {}
###########################################################
########## 1.list(리스트)
a = [0,0,0,0]
b = []
print(a, len(a)) #len(a) : a 리스트의 요소의 갯수
print(b, len(b))
# a 길이만큼 숫자를 입력받아, a에 저장하고, 입력받은 숫자의 전체 합게 출력하기
# a 길이만큼 숫자를 입력받아, b에 저장하고, 입력받은 숫자의 전체 합게 출력하기
hap1 = 0
for i in range(0, len(a)) : # : 0 ~ len(a) -1까지의 숫자
a[i] = int(input(str(i+1)+"번째 숫자 입력 : "))
# b[i] = a[i] : 오류발생
b.append(a[i]) #b 리스트에 요소를 추가
hap1 += a[i]
print(a, "요소의 합 : ", hap1)
# sum(리스트) : 숫자형 요소의 합 리턴
print(a, "요소의 합 : ", sum(a))
print(b, "요소의 합 : ", sum(b))
print("a=%s" % (a)) # 형식문자를 이용한 출력
a.append(1)
print(a)
# a list 정렬하기
a.sort(a)
print(a)
print(a[4]) #마지막 요소 출력하기
print(a[len(a)-1]) #마지막 요소 출력하기
print(a[-1]) #마지막 요소 출력하기
print(a[-2]) #마지막에서 2번째 요소 출력하기
#pop() : 마지막요소를 제거하고 리턴
print("pop() 결과: ", a.pop())
print(a) #마지막 요소가 제거됨
#reverse() : 요소들의 위치를 역순으로 리턴
a.reverse()
print(a)
#index(값) : 리스트에서 값의 위치 리턴
print(a, "리스트에서 20의 위치: ", a.index(20))
print(a, "리스트에서 50의 위치: ", a.index(50)) #요소가 없는 경우 오류 발생
#print(a, "리스트에서 20의 위치: ", a.find(20)) #리스트는 find함수가 없음. 사용불가.
#insert(인덱스, 값) : 리스트에 중간에 요소 추가
a.insert(2, 222)
print(a)
#remove(값) : 리스트에 해당 요소를 삭제
a.remove(222)
print(a)
#extend() : 다른 리스트 추가하기
a.extend(b) #a리스트에 b리스트 추가하기
print(a)
#a 리스트에 30값의 갯수 출력하기
print(a, "30의 갯수: ", a.count(30)) #2
print(a, "300의 갯수: ", a.count(300)) #0
# 문자열을 분리하여 리스트로 저장하기
day = "2022/06/14"
c = day.split("/") #문자열을 특정문자("/")로 분리하여 리스트로 리턴
print(c)
# 문제 : ss 문자열의 모든 숫자들의 합을 출력하기
ss = "10,20,50,60,30,40,50,60,30"
# slist : 리스트의 요소의 자료형은 문자열임
slist = ss.split(",")
#print(sum(slist)) #요소의 자료형이 문자열인 경우 사용불가
hap = 0
for n in slist : #n : slist의 각각의 요소의 값
hap += int(n) # int('10') = 10 : 문자열을 숫자로 변환 for구문으로 반복
print(slist, "의 요소의 합: ", hap)
#map 함수 : 리스트(slist)의 요소에 적용되는 함수(int) 설정하는 함수
mlist = list(map(int, slist))
print(mlist)
print(sum(mlist))
print(slist, "의 요소의 합: ", sum(list(map(int, slist))))
########## 2. dictionary(덱셔너리) : {(키1:값1),(키2:값2)}
score_dic = {'lee':100,'hong':70,'kim':90}
print(score_dic)
print(type(score_dic)) # <class 'dict'>
#'hong'의 점수 출력하기
# dictionary['key'] : value값 리턴.
print(score_dic['hong'])
#'hong'의 점수 수정하기
score_dic['hong'] = 75
print(score_dic)
#'park'의 점수 추가하기
score_dic['park'] = 80
print(score_dic)
#'park' 정보 제거하기
del score_dic['park']
print(score_dic)
#키들만 조회하기
print(score_dic.keys()) #dict_keys(['lee', 'hong', 'kim'])
print(list(score_dic.keys())) #['lee', 'hong', 'kim']
#값들만 조회하기
print(score_dic.values()) #dict_values([100, 75, 90])
print(list(score_dic.values())) #[100, 75, 90]
#(키,값)들 조회하기
print(score_dic.items()) #dict_items([('lee', 100), ('hong', 75), ('kim', 90)])
print(list(score_dic.items())) # [('lee', 100), ('hong', 75), ('kim', 90)]
'''
문제 : 1. 궁합음식의 키를 입력받아 해당되는 음식을 출력하기
등록안된 경우 오류 발생 => 등록여부 판단 필요
2. 종료 입력시 등록된 내용 출력하기
등록된 음식 :
떡볶이 : 오뎅
짜장면 : 단무지
3. 등록이 안된 경우
등록여부를 입력받아, 등록하는 경우 궁합음식을 입력받기
등록하시겠습니까(y)?
y 입력 : foods 객체에 추가
궁합음식 입력받아서 foods에 추가함
y가 아닌 경우 :
음식을 다시 입력하기
'''
foods = {"떡볶이":"어묵","짜장면":"단무지","라면":"김치","맥주":"치킨"}
while True :
myf = input(str(list(foods.keys())) + "중 입력 (종료): ")
if myf == '종료' :
break
if myf in foods: #foods데이터의 키값 중 myf가 존재?
print("%s 의 궁합음식 : %s" % (myf, foods[myf]))
else :
print("%s은 등록된 음식이 아닙니다." % (myf))
y = input("등록하시겠습니까(y)?")
if y == 'y' :
myf2 = input(myf + "의 궁합음식을 입력: ")
foods[myf] = myf2
#foods.keys() : foods 데이터의 키값들만 조회
print("등록된음식: ")
for k in foods.keys() :
print("%3s : %3s" % (k, foods[k]))
#foods : foods 데이터의 키값들만 조회
print("등록된음식: ")
for k in foods :
print("%3s : %3s" % (k, foods[k]))
#foods.keys() : (키,값) 쌍인들
print("등록된음식: ")
for k,v in foods.items() :
print("%3s : %3s" % (k, v))
########## 3.tuple(튜플) : 상수화된 리스트, ()
tp1 = (10,20,30)
print(tp1)
for t in tp1 :
print(t)
print(tp1[0],tp1[1],tp1[2])
print(tp1[1:3])
#tp1.append(40) #튜플에는 요소 추가 안됨. 리스트로 변경 후 추가 가능
list1 = list(tp1) #튜플객체를 리스트 객체로 변환
list1.append(40)
tp1 = tuple(list1) #리스트객체를 튜플 객체로 변환
print(tp1)
#tp1[0] = 100 #튜플에는 요소 수정 안됨. 리스트로 변경 후 수정 가능
list1 = list(tp1) #튜플객체를 리스트 객체로 변환
list1[0] = 100
tp1 = tuple(list1) #리스트객체를 튜플 객체로 변환
print(tp1)
#tp1 요소의 합을 출력하기
print(sum(tp1))
print(sum(list1))
#tp1 요소중 첫번째, 두번째 요소만 출력하기
print(tp1[0],tp1[1])
print(tp1[2])
#tp1 요소를 역순으로 배치하기 => 변경불가
tp1.reverse() #오류 발생
#tp1 요소를 역순으로 출력하기
for i in range(len(tp1)-1,-1,-1) :
print(tp1[i], end=" ")
print(tp1[::-1]) #시작인덱스(0):종료인덱스(마지막인덱스):증감식
#증감식 : -1 : 뒤부터 시작
a,b,c,d = tp1 # a,b,c,d = (40,30,20,100) a=40, b=30, c=20, d=100
# 튜플의 요소의 갯수와 변수의 변수의 갯수가 동일해야 함
print(a,b,c,d)
a,b,c = tp1 # 오류발생. tp1의 갯수가 더 많음.
a,b,c,d,e = tp1 #오류발생. tp1의 갯수가 더 적음.
########## 4. set(셋) : 중복불가. 집합을 표현하는 객체.
set1 = {30,10,20,10}
print(set1) # 10요소는 한개만 저장. 순서지정 안됨.
#print(set1[0]) #인덱스 사용 안됨
set1 = {1,2,3,4,5}
set2 = {1,2,3,4,5,1,2,3,4,5}
print(set1)
print(set2)
set3 = {5,6,7,8}
# 교집합 : 두개의 집합에 공통 요소들
print("set1과 set2의 교집합: ", set1 & set2)
print("set1과 set3의 교집합: ", set1 & set3)
print("set1과 set3의 교집합: ", set1.intersection(set3)) #교집합 함수
# 합집합 : 두개의 집합에 속한 모든 요소들
print("set1과 set2의 합집합: ", set1 | set2)
print("set1과 set3의 교집합: ", set1 | set3)
print("set1과 set3의 교집합: ", set1.union(set3)) #합집합 함수
########## 5. comprehension 방식으로 Collection 객체 생성하기
# 규칙성이 있는 데이터를 Collection 객체 생성
numvers = []
#numvers 리스트에 1 ~ 10 까지의 데이터 저장하기
#1
numvers = [1,2,3,4,5,6,7,8,9,10]
print(numvers)
#2
numvers = []
for n in range(1, 11) :
numvers.append(n)
print(numvers)
#3 conprehension 방식
numvers = [x for x in range(1,11)]
print(numvers)
# 문제 : 2부터 20까지 짝수들을 numvers 리스트에 저장하기
#1
numvers = [x*2 for x in range(1,11)]
print(numvers)
#2
numvers = [x for x in range(2, 21, 2)]
print(numvers)
#3
numvers = [x for x in range(1, 21) if x % 2 == 0]
print(numvers)
# 문제 : 1 ~ 20까지의 수 중 2의 배수와 3의 배수만을 nums 리스트에 데이터 저장하기
nums = [n for n in range(1, 21) if (n % 2 == 0) or (n % 3 == 0)]
print(nums)
#두개의 리스트 데이터를 각각 한개씩 튜플로 생성하고, 튜플을 리스트로 생성하기
clist = ['black', 'white']
slist = ['S', 'M', 'L']
#1
dlist = [] # [(black, S)...]
for c in clist : # c : black...
for s in slist : # s : S...
tp1 = (c,s) # 튜플객체 생성
dlist.append(tp1)
print(dlist)
#2
dlist = [(c,s) for c in clist for s in slist]
print(dlist)
#3
dlist = list((c,s) for c in clist for s in slist)
print(dlist)
728x90
반응형
'study > Python' 카테고리의 다른 글
[Python] 31. Test 답 (0) | 2022.06.14 |
---|---|
[Python] 31. Test (0) | 2022.06.14 |
[Python] 30. Test 답 (0) | 2022.06.14 |
[Python] 30. Test (0) | 2022.06.14 |
[Python] 30. 기본, 변수와 식 (0) | 2022.06.13 |