strMethod02.py
s3 = 'i like programming, i like swimming.'
print("s3.startswith('i like') ", s3.startswith('i like')) # 'i like'로 시작하는 문자열인지 판단
print("s3.startswith('I like') ", s3.startswith('I like')) # 대소문자 구별
print("s3.endswith('swimming.' ", s3.endswith('swimming.')) # 'swimming.'로 끝나는 문자열인지 판단
print("s3.startswith('progr', 7) ", s3.startswith('progr', 7)) # 7번째 문자열이 'progr'로 시작하는지 판단
strMethod03.py
print ("-------------------------------------")
print ("---- join -> 연결한 문자열 반환 ")
print ("-------------------------------------")
u = 'spam ham\tegg\ncheese'
t = u.split() # 문자열 내의 단어 리스트
print("u.split 99 -->", t)
t2 = ':'.join(t) # 리스트 t 내부의 각 원소들을 ':'로 연결한 문자열 반환
print("type(t2)", type(t2))
print("':'.join(t)-->", t2)
print()
t3 = ",".join(t) # 리스트 t 내부의 각 원소들을 ','으로 연결한 문자열 반환
print("t3->", t3)
strMethod04.py
print ("---------------------- Character -------------------")
print('1234'.isdigit())
print('abcd'.isalpha())
print('1abc234'.isalnum())
print('abc'.islower())
print('ABC'.isupper())
print('\t\r\n'.isspace())
print('This Is A Title'.istitle())
strMethod05.py
print ("---------------------------------------------------------------------")
print ("--- 문자열 포매팅 튜플을 이용한 포매팅 --")
print ("--- 포맷팅 문자 : 문자열 내에 존재하는 % --")
print ("--- 포맷팅을 활용한 문자열 변환:포맷팅 문자를 포함하는 문자열 % 튜플 --")
print ("----------------------------------------------------------------------")
print ()
print('version2 방식 : name = %s, age = %s' % ('한창훈', 24))
print("version3 방식 : name = {}, age = {}".format('허유나', 34))
print('version3(index) 방식 : name = {1}, age = {0}'.format('손신효', 19))
letter = '''
안녕하세요 %s님
오늘 밤 파티에 참석해 주실 수 있나요?
그럼 ..
최혜선 드림
'''
name = '공현지'
print("---- 111 letter % name ----", letter %name)
print("===================================")
names = ['오태우', '신동호', '이례영', '김우석', '김건희']
for name in names:
print(" letter % name ", letter %name)
print('-' * 40)
print()
print ("--------------------------------------------------------")
print ("----- 문자열 포매팅 튜플을 이용한 포매팅 ----")
print ("----- 사전(Dictionary)을 이용한 포매팅 ----")
print ("----- 사전형태이기 때문에 순서가 바뀌어도 괜찮음 ----")
print ("----- 주소 항목은 % 앞에 없기 때문에 무시 ----")
print ("--------------------------------------------------------")
print('%(이름)s -- %(전화번호)s' %{'이름':'장제환', '전화번호':1234})
print('%(이름)s -- %(전화번호)s' %{'전화번호':5678, '이름':'최지웅'})
print('%(이름)s -- %(전화번호)s' %{'전화번호':2345, '이름':'김현진', '주소':'안시성'})
print('Version 3 {} -- {}'.format(5678, '장하영'))
print('Version 3 index {0} -- {1}'.format(5678, '임재우'))
append.py
# 리스트에 요소 추가하기 ( append() 함수 )
listdata = [] # 빈 리스트를 listdata로 정의
for i in range(3):
txt = input('리스트에 추가할 값을 입력하세요[%d/3]: ' %(i+1))
listdata.append(txt)
print(listdata)
del.py
# 리스트의 특정 위치의 요소 제거하기 ( del 키워드 )
# del 키워드로 리스트 특정 위치의 요소를 제거할 수 있다.
solarsys = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
del solarsys[0]
print(solarsys)
del solarsys[-2]
print(solarsys)
index1.py
# 리스트 특정 위치에 요소 삽입하기( insert() 함수 )
solarsys = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
pos = solarsys.index('목성') # '목성' 의 index번호를 구함 : pos = 5
solarsys.insert(pos, '소행성') # index 5번 위치에 '소행성' 을 삽입함
print(solarsys)
index2.py
# 리스트에서 특정 위치의 요소를 변경하기
solarsys = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
planet = '화성'
pos = solarsys.index(planet) # index번호 4
solarsys [pos] = 'Mars' # '화성' 을 'Mars'로 변경
print(solarsys)
insert1.py
# 리스트에서 특정 요소의 위치 구하기 ( index() 함수 )
# index()함수는 리스트 요소의 index번호를 구해주는 역할
solarsys = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성', '지구']
planet = '지구'
pos = solarsys.index(planet) # index번호 3
print('%s은(는) 태양계에서 %d번째에 위치하고 있습니다.' %(planet, pos))
pos = solarsys.index(planet, 5) # index번호 9
print('%s은(는) 태양계에서 %d번째에 위치하고 있습니다.' %(planet, pos))
len.py
# 리스트에 있는 모든 요소 갯수 구하기 ( len() 함수 )
listdata = [2, 2, 1, 3, 8, 5, 7, 6, 3, 6, 2, 3, 9, 4, 4]
listsize = len(listdata)
print(listsize) # 15가 출력됨
listData.py
#리스트에서 특정 위치의 요소 구하기
listdata = [1, 2, 'a', 'b', 'c', [4, 5, 6]]
val1 = listdata[1] # 1번 index번호값을 구함 2
val2 = listdata[3] # 3번 index번호값을 구함 b
val3 = listdata[5][1] # 5번 index번호에 또 1번 index번호를 구함 5
print(val1) # 2가 출력됨
print(val2) # 'b’가 출력됨
print(val3) # 5 가 출력됨
listPlus.py
# 리스트 데이터 합치기 ( + )
listdata1 = ['a', 'b', 'c', 'd', 'e']
listdata2 = ['f', 'g', 'h', 'i', 'j']
listdata3 = listdata1 + listdata2
listdata4 = listdata2 + listdata1
print(listdata3) # ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
print(listdata4) # ['f', 'g', 'h', 'i', 'j', 'a', 'b', 'c', 'd', 'e']
range.py
# 순차적인 정수 리스트 만들기 ( range() 함수 )
# range() 함수는 특정 범위의 순차적인 정수 리스트를 만들게 해준다.
range1 = range(10) # 0 ~ 9
range2 = range(10, 20) # 10 ~ 19
print(list(range1)) # [0 ,1, 2, 3, 4, 5, 6, 7, 8, 9]가 출력됨
print(list(range2)) # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]가 출력됨
# 5부터 10까지 합을 구하는 프로그램
sum=0
for i in range(5,11): # 1 ~ 10 까지 loop가 돌아감
sum += i
print('sum=', sum)
reverse.py
# 리스트의 요소 순서를 역순으로 만들기 ( reverse() 함수 )
# reverse() 함수는 리스트의 모든 요소 순서를 거꾸로 만들어 주는 함수
# reverse() 함수는 원본 리스트 자체가 변경됨
listdata = list(range(5)) # [0,1,2,3,4]
listdata.reverse() # 리스트의 요소 순서를 역순으로 바꿔줌
print(listdata) # [4, 3, 2, 1, 0]이 출력됨
shuffle.py
# 리스트의 요소 무작위로 섞기 ( shuffle() 함수 )
# random 모듈의 shuffle() 함수는 리스트 요소를 무작위로 섞어주는 함수
# 실행 결과는 매번 달라짐
# from 모듈명 import 함수명
from random import shuffle
listdata = list(range(1, 11)) # 1 ~ 10
for i in range(3): # i는 0 ~ 2까지 3번 loop가 돌아감
shuffle(listdata) # shuffle() 함수는 무작위로 섞어줌
print(listdata) # 출력 결과는 실행할 때마다 달라짐
slice.py
# 리스트에서 특정 구간에 있는 요소 추출하기
# [1 : 4] index번호 1번 부터 3번까지 추출
# [4 : ] index번호 4번 부터 끝까지 추출
solarsys = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
rock_planets = solarsys[1:4]
gas_planets = solarsys[4:]
print('태양계의 암석형 행성: ')
print(rock_planets)
print('태양계의 가스형 행성: ');print(gas_planets)
slice2.py
# 리스트에서 홀수.짝수번째 요소만 추출하기
listdata = list(range(1, 21)) # 1 ~ 20 까지 순차적인 정수 리스트를 생성
print(listdata)
evenlist = listdata[1::2] # index번호 1번부터 step 2로 슬라이싱
print(evenlist) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
oddlist = listdata[::2] # index번호 0번부터 step 2로 슬라이싱
print(oddlist) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
sort.py
# 리스트 요소 정렬하기 ( sort() 함수 )
# sort() 함수는 리스트에 있는 요소를 오름차순으로 정렬해주는 역할을 함
# 내림차순 정렬을 하기 위해서는 sort(reverse = True)
namelist = ['Mary', 'Sams', 'Aimy', 'Tom', 'Michale', 'Bob', 'Kelly']
namelist.sort() # 리스트에 있는 요소를 오름차순으로 정렬함
print(namelist)
namelist.sort(reverse = True) # 리스트에 있는 요소를 내림차순으로 정렬함
print(namelist)
sorted.py
# 리스트 요소 정렬하기 ( sorted() 함수 )
# 파이썬 내장함수 sorted() 함수는 리스트의 모든 요소를 정렬한 결과 리스트를 리턴함
namelist = ['Mary', 'Sams', 'Aimy', 'Tom', 'Michale', 'Bob', 'Kelly']
ret1 = sorted(namelist) # 리스트의 요소를 오름차순 정렬함
ret2 = sorted(namelist, reverse=True) # 리스트의 요소를 내림차순 정렬함
print(ret1)
print(ret2)
sum.py
# 리스트의 모든 요소의 합 구하기 ( sum() 함수 )
# sum() 함수는 리스트의 모든 요소의 합을 구하고 리턴함
listdata = [2, 2, 1, 3, 8, 5, 7, 6, 3, 6, 2, 3, 9, 4, 4]
ret = sum(listdata)
print(ret) # 65가 출력됨
listIn01.py
print ("---------------------------------------------------------------")
print ("--- 리스트 내포 --")
print ("--- 일반적인 리스트 생성법 --")
print ("---------------------------------------------------------------")
L = [] # 0,1, 4, 9....81
# 0,1,2,3,4,5,6,7,8,9
for k in range(10):
L.append(k*k)
print (L)
print ("--- <<< 위 코딩은 리스트 내포 리터럴 방식을 활용해서 아래와 같이 변경 >>> --")
print ("--- for 의 변수가 식으로 들어간 변수와 동일해야함 --")
print ("--- 0, 1, 2, 3…이 k에 할당될 때마다 식을 진행하여 리스트의 원소로 할당 --")
L = [k * k for k in range(10)]
print ('리스트 내포 리터럴 방식->', L)
listIn02.py
print ("--- <<< 리스트 내포 리터럴 방식 >>> --")
print ("--- k=0 → 0 % 2 = 0 → if 0 → 결과가 false로 expression 수행 X --")
print ("--- k=1 → 1%2 = 1 → if 결과가 true로 expression 수행 --")
print ("--- k=2 → 2 % 2 = 0 → if 0 → 결과가 false로 expression 수행 X --")
print ("--- k=3 → 3%2 = 1 → if 결과가 true로 expression 수행 --")
L = [k * k for k in range(10) if k % 2] # 홀수의 제곱만 리스트로 형성
print (L)
listIn03.py
print ("------------------------------------------------------------------------------")
print ("--- 리스트 내포 --")
print ("--- 20보다 작은 2의 배수와 3의 배수에 대해 그 두 수의 합이 7의 배수인 것들에 대해 --")
print ("--- 그 두 수의 곱을 출력하는 코드 --")
print ("--- 1) range(2, 20, 2) = [2, 4, 6, 8, 10, 12, 14, 16, 18] --")
print ("--- 2) range(3, 20, 3) = [3, 6, 9, 12, 15, 18] --")
print ("--- 3) i ← 20보다 작은 2의 배수, j ← 20보다 작은 3의 배수 --")
print ("--- 4) 2 + 12 = 14 ← 7의 배수 --")
print ("--- 5) 4 + 3 = 7 ← 7의 배수 --")
print ("--- 6) 18 + 3 = 21 ← 7의 배수 --")
print ("-------------------------------------------------------------------------------")
L = [(i, j, i*j) for i in range(2, 20, 2) for j in range(3, 20, 3) if (i + j) % 7 == 0]
print (L)
listIn04.py
print ("--------------------------------------------------------------------------------")
print ("--- 리스트 내포 --")
print ("--- 문장을 공백상태로 잘라오면서 대문자,소문자,길이를 --")
print ("--- 리스트에 저장하는 코드 --")
print ("--- split ()→ 공백을 기준으로 문자열 잘라 리스트 만들기 --")
print ("--- stuff는 리스트 내포 문법 형태 --")
print ("--- 리스트 내포 안의 원소는 3개의 원소를 가진 리스트 형태로 하나 --")
print ("--- upper : 대문자로 변환, lower: 소문자로 변환, len: 단어의 길이 --")
print ("--- i 자체가 리스트 --")
print ("------------------------------------------------------------------------------")
# The quick brown fox jumps over the lazy dog
words = 'The quick brown fox jumps over the lazy dog'.split()
print('words->' , words)
# ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
stuff = [[w.upper(), w.lower(), len(w)] for w in words]
for i in stuff:
print (i)
tuple01.py
print ("-------------------------------------------------------------------------")
print ("--- << 튜플 연산 >> --")
print ("--- 1) t = (정수, 정수, 문자열) --")
print ("--- 2) u = t, (1, 2, 3, 4, 5) → 2개의 원소를 가진 튜플 → 원소로 튜플 가능 --")
print ("--- 3) u2 = t2, (1, 2, 3) → 원소로 리스트 가능 --")
print ("--- 4) 원소로 사전도 가능 --")
print ("--------------------------------------------------------------------------")
t = (12345, 54321, 'hello!')
u = t, (1, 2, 3, 4, 5) # 튜플 내부 원소로 다른 튜플을 가질 수 있음
print ("t, (1, 2, 3, 4, 5) -->", u )
tuple02.py
# 튜플 내부 원소로 리스트 가질 수 있음
# 튜플 내부 원소로 사전 가질 수 있음
t2 = [1, 2, 3] # 튜플 내부 원소로 리스트 가질 수 있음
u2 = t2, (1, 2, 4)
print ("t2, (1, 2, 4) -->", u2 )
t3 = {1:"abc", 2:"def"} # 튜플 내부 원소로 사전 가질 수 있음
u3 = t3, (1, 2, 3)
print ("t3, (1, 2, 3) -->", u3)
tuple03.py
# list()와 tuple()내장 함수를 사용하여 리스트와 튜플을 상호 변환할 수 있음
T = (1,2,3,4,5)
print('T->', T)
# T[0] = 100 --> Tuple은 변환 안 됨
L = list(T)
L[0] = 100
print('L->', L)
del.py
# 사전의 특정 요소 제거하기 ( del 키워드 )
names = {'Mary':10999, 'Sams':2111, 'Aimy':9778, 'Tom':20245,
'Michale':27115, 'Bob':5887, 'Kelly':7855}
del names['Sams'] # names 요소중 키가 'Sams'인 요소를 사전에서 제거
print(names)
dict01.py
#딕셔너리(dictionary)
# 문제 각 Row(행)을 리스트외 Dictionary를 사용 작성
address3 = {
'1': { 'name': '이순신', 'email':'hong@gmail.com', 'hp-num': '010-2234-9678'},
'2': {'name': '대조영', 'email': 'dae@gmail.com', 'hp-num': '010-1234-5679'},
'3': { 'name': '강감찬', 'email': 'kang@gmail.com', 'hp-num': '010-6783-3670'},
'4': {'name': '김유신', 'email': 'kim@gmail.com', 'hp-num': '010-7823-3578'},
}
print("address3->" , address3)
for key in address3:
addr_dict = address3[key]
print("addr_dict->" , addr_dict)
dict_change.py
# 사전의 특정 요소값 변경하기
# 아기이름 : 출생아수
names = {'Mary':10999, 'Sams':2111, 'Aimy':9778, 'Tom':20245,
'Michale':27115, 'Bob':5887, 'Kelly':7855}
names['Aimy'] = 10000
print(names)
dict_in.py
# 사전에 특정 key가 존재하는지 확인하기 ( in 키워드 )
# in 키워드를 이용하여 특정 값이 사전의 key로 존재하는지 확인할 수 있다.
names = {'Mary':10999, 'Sams':2111, 'Aimy':9778, 'Tom':20245,
'Michale':27115, 'Bob':5887, 'Kelly':7855}
k = input('이름을 입력하세요: ')
if k in names: # 입력한 이름 k가 사전 names의 키로 존재하면... True 리턴
print('이름이 <%s>인 출생아수는 <%d>명 입니다.' %(k, names[k]))
else:
print('자료에 <%s>인 이름이 존재하지 않습니다.' %k)
dict_items.py
# 사전 요소를 모두 추출하기 ( items() 함수 )
# items() 함수는 사전에서 key:value 를 모두 추출하여 리턴
names = {'Mary':10999, 'Sams':2111, 'Aimy':9778, 'Tom':20245,
'Michale':27115, 'Bob':5887, 'Kelly':7855}
items = names.items()
print(items)
for item in items:
print(item)
dict_keys.py
# 사전에 key만 추출하기 ( keys() 함수 )
# key() 함수는 사전의 key만 추출하여 리턴
names = {'Mary':10999, 'Sams':2111, 'Aimy':9778, 'Tom':20245,
'Michale':27115, 'Bob':5887, 'Kelly':7855}
ks = names.keys()
print(ks)
# ['Mary', 'Sams', 'Aimy', 'Tom', 'Michale', 'Bob', 'Kelly']
for k in ks:
print('Key:%s \tValue:%d' %(k, names[k]))
'PYTHON' 카테고리의 다른 글
20221201 def (0) | 2022.12.01 |
---|---|
20221125 함수(2), list, tuple, dictioinary, seq, strMethod (0) | 2022.11.25 |
20221124 제어문, 함수(1) (0) | 2022.11.25 |
20221123 string, variable, arithmetic, inOperator, compOperator, if (0) | 2022.11.23 |
20221121 first, input, hex, import (0) | 2022.11.22 |
댓글