# 파이썬 자료형
# 리스트는 [] 로 표시하며, [] 안의 요소를 , 로 구분하여 순서있게 나열한다.
list1 = [1, 2, 3, 4, 5] # 숫자
list2 = ['a', 'b', 'c'] # 문자
list3 = [1, 'a', 2, 'b', 3, 'c', [1,2,3], ['a','b','c']] #숫자문자 섞어서, 리스트 안에 리스트 가능
print(list1)
print(list2)
print(list3)
list1[0] = 6
print(list1)
[1, 2, 3, 4, 5]
['a', 'b', 'c']
[1, 'a', 2, 'b', 3, 'c', [1, 2, 3], ['a', 'b', 'c']]
[6, 2, 3, 4, 5]
In [6]:
#지역 변수 선언
def myfunc():
print('안녕하세요')
list4 = [1, 2, myfunc]
print(list4)
list4[2]()
|
[1, 2, <function myfunc at 0x000002405267D558>]
안녕하세요
In [7]:
#리스트 수정, 변경, 삭제
a = [1, 2, 3]
a[2] =4
a[1:2] # 1 초과 2 이하
print(a)
|
[1, 2, 4]
In [8]:
#리스트 수정, 변경, 삭제
a = [1, 2, 3]
a[2] =4
a[1:2] = ['a', 'b', 'c']
print(a)
del a[1:4]
print(a)
|
[1, 'a', 'b', 'c', 4]
[1, 4]
In [13]:
a=[1,2,3,4,5,6,7,8,9]
#[15,5,6,7]
del a[0:3]
a[0]=15
del a[4:6]
print(a)
|
[15, 5, 6, 7]
In [15]:
#정렬(sort)
b=[2,3,4,1]
b.sort() #정방향으로 정렬
print(b)
c=['a','c','d']
c.sort(reverse=True) #역방향으로 정렬
print(c)
|
[1, 2, 3, 4]
['d', 'c', 'a']
In [6]:
d=['a','b','d']
d.reverse()
print(d)
print(sorted(d,reverse=True))
|
['d', 'b', 'a']
['d', 'b', 'a']
In [2]:
#리스트 요소의 인덱스 위치 반환
e=[1,2,3]
print(e.index(3))#3의 인덱스를 반환하는 것 3이 2번 배열에 들어가있다는 것을 표시
print(e.index(1))
|
2
0
In [10]:
f=[1,2,3]
print(f.pop())#배열의 마지막 요소이 출력되고 그 요소를 삭제 한다. # 컨트롤+엔터 실행키
print(f)
|
3
[1, 2]
In [7]:
#알트+엔터 생성키
g=[1,2,3,1] #리스트내에 x가 몇 개인지 조사하여 그 갯수를 반환
print(g.count(1))
|
2
In [11]:
h=[1,2,3]#리스트 확장하는 것
h.extend([4,5,])
print(h)
|
[1, 2, 3, 4, 5]
In [14]:
a=[1,2,3]
a.append(4)
print(a)
a.append([5,6])#리스트를 추가 할 수 있다.
print(a)
|
[1, 2, 3, 4]
[1, 2, 3, 4, [5, 6]]
In [17]:
#튜플
#리스트와 비슷한 성질을 가지고 있는 자료형이지만 요소값을 변경 할 수 없음
#프로그램이 실행되는 동안 그 값이 항상 변하지 않아야되는 경우
t1=(1,2,3,4,5) # () 튜플 []배열
t2=('a','b','c')
t3=(1,'a','abc',[1,2,3,4,5],['a','b','c'])
def myfunc():
print('안녕하세요')
t4=(21,2,myfunc)
#t1[0]=6
#print(t1)
print(t4)
t4[2]()
|
(21, 2, <function myfunc at 0x0000015AE20EC678>)
안녕하세요
In [22]:
t1 = (1,) # 1개의 요소만 가질 때는 요소뒤에 콤마를 붙여야 함
print(t1)
t1 = (1,2,3,4,5)
t2 = ('a','b','c')
t3 = (1,'a','abc', [1,2,3,4,5],['a','b','c'])
print(t1)
print(t2)
print(t3)
|
(1,)
(1, 2, 3, 4, 5)
('a', 'b', 'c')
(1, 'a', 'abc', [1, 2, 3, 4, 5], ['a', 'b', 'c'])
In [21]:
a=(1,2,3)
b=('a','b','c')
c=a+b
print(c)
print(c*3)
|
(1, 2, 3, 'a', 'b', 'c')
(1, 2, 3, 'a', 'b', 'c', 1, 2, 3, 'a', 'b', 'c', 1, 2, 3, 'a', 'b', 'c')
In [27]:
#사전
#사전은 키와 값을 하나의 요소로 하는 순서가 없는 집합
#시퀀스 자료형이 아니면 인덱싱으로 값을 접근 할 수 없음
dic1={'a':1, 'b':2,'c':3}
print(dic1['a'])
print(dic1['c'])
print(dic1)
print(len(dic1)) # 배열의 개수를 출력
|
1
3
{'a': 1, 'b': 2, 'c': 3}
3
In [33]:
#딕셔너리 관련 함수 {}로 사용함
a={'name':'pey','phone':'0123456789','birth':'1108'}
print(a.keys())
print(a.values())
print(a.items()) #key:value 쌍 얻기
print(a.get('name'))
print(a.get('nokey'))#nokey의 값이 없기 때문에 none으로 나온다.
|
dict_keys(['name', 'phone', 'birth'])
dict_values(['pey', '0123456789', '1108'])
dict_items([('name', 'pey'), ('phone', '0123456789'), ('birth', '1108')])
pey
None
In [38]:
#해당 key가 딕셔너리 안에 있는지 조사(in)
a={'name':'pey','phone':'0123456789','birth':'1108'}
print('name' in a)
print('email' in a)
|
True
False
In [43]:
#딕셔너리 안에서 찾으려고 하는 key값이 없는 경우에 미리 정해준 디폴트 값을 가져오게 하고 싶을 경우에는 get(x,'디폴트 값')을 사용
a={'name':'pey','phone':'0123456789','birth':'1108'}
print(a.get('foo','bar'))#foo가 없을 경우 디폴트 값 bar를 가져온다
print(a.clear())
print(a.get('name','bar'))#name이 있을 경우 name의 값 pey를 가져온다.
|
bar
None
bar
In [46]:
#set
#set 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없음
s1=set([1,2,3,4,5,6])
s2=set([4,5,6,7,8,9])
print(s1&s2)# &는 교집합의 의미
print(s1.intersection(s2)) #교집합의 다른 사용방법
print(s1|s2)#|는 합집합의 이미
print(s1.union(s2))#합집합의 다른 사용방법
|
{4, 5, 6}
{4, 5, 6}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
In [49]:
#리스트로 출력하기
s3=list(s1&s2) #교집합
print(s3)
s4=list(s1|s2)#합집합
print(s4)
|
[4, 5, 6]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
In [52]:
#뺄셈
s1=set([1,2,3,4,5,6])
s2=set([4,5,6,7,8,9])
print(s1-s2)
print(s2-s1)
|
{1, 2, 3}
{8, 9, 7}
In [57]:
s1.add(7)# 값 1개 추가
print(s1)
s1.update([9,10])#값 여러개를 추가
print(s1)
s1.remove(10)
print(s1)
|
{1, 2, 3, 4, 5, 6, 7, 9}
{1, 2, 3, 4, 5, 6, 7, 9, 10}
{1, 2, 3, 4, 5, 6, 7, 9}
In [64]:
#이스케이프 문자
#키보드로 입력하기 어려운 기호들을 나타내기 위해 역슬래쉬'\'로 시작하는 문자
print('나는 파이썬을 사랑합니다. 파이썬은 자바보다 쉽습니다.')
print('나는 파이썬을 사랑합니다.\n파이썬은 자바보다 쉽습니다.')#띄어쓰기
print('Name:Jone \tSex:Male \tAge:22')#탭띄우기
print('이 문장은 화면 폭이 너무 길어 다음 줄로 넘깁니다. \그러나 문장을 한줄에서 보고 싶습니다.') # 자바의 +과 같은 의미
|
나는 파이썬을 사랑합니다. 파이썬은 자바보다 쉽습니다.
나는 파이썬을 사랑합니다.
파이썬은 자바보다 쉽습니다.
Name:Jone Sex:Male Age:22
이 문장은 화면 폭이 너무 길어 다음 줄로 넘깁니다. \그러나 문장을 한줄에서 보고 싶습니다.
In [67]:
#들여쓰기
listdata=['a','b','c']
if 'a' in listdata:
print('a가 listdata에 있습니다.')
print(listdata)
else:
print('a가 listdata에 존재하지 않습니다.')
|
a가 listdata에 있습니다.
['a', 'b', 'c']
In [107]:
#문자열 포멧팅
#숫자 대입
a="I eat %d apples."%3 #3을 %d에 대입하라
print(a)
#문자 대입
b='I eat %s apples.' %'five'
print(b)
number=3
c='I eat %d apples.' %number
print(c)
#2개 이상의 문자, 숫자를 대입할 경우
number=10
day='three'
d='I eat %d apples. so I was sick of %s days' %(number, day)
print(d)
|
I eat 3 apples.
I eat five apples.
I eat 3 apples.
I eat 10 apples. so I was sick of three days
In [109]:
# %s 포멧코드는 어떤 형태의 값이든 변환해 넣을 수 있음
#%s 는 자동으로 % 뒤에 있는 값을 문자열로 변경함 /숫자가 오더라도 문자열로 출력된다.
e='I have %s apples' %3
print(e)
f='rate is %s' %3.234
print(f)
|
I have 3 apples
rate is 3.234
In [112]:
# %를 나타내려면 반드시 %%로 써야 한다.
g='Error is %d%%.' %98
print(g)
|
Error is 98%.
In [115]:
# 정렬과 공백
a='%10s' %'hi' #전체 길이가 10개인 문자열 공간에서 오른쪽 정렬
print(a)
b='%-10s' %'hi'
print(b)
|
hi
hi
In [124]:
#소수점 표현하기
c='%0.2f' %3.4567892
print(c)
d='%10.4f' %3.4567892
print(d)
e='%10.2f' %3.4567892
print(e)
|
3.46
3.4568
3.46
In [130]:
# 문자열 관련 함수
a='hobby'
print(a.count('b')) #문자 개수를 세기 알파벳 b의 개수를 세기
a='Python is best choice'
print(a.find('b')) #b의 방 번호를 찾는 방법
print(a.find('k'))#k가 없는 경우는 -1이 반환 된다.
print(a.index('n'))
print(a.index('k'))#없는 경우는 오류가 발생한다.
|
2
10
-1
5
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-130-6999e625ec54> in <module> 6 print(a.find('k'))#k가 없는 경우는 -1이 반환 된다. 7 print(a.index('n')) ----> 8 print(a.index('k'))#없는 경우는 오류가 발생한다. ValueError: substring not found
In [133]:
#문자열 삽입(join)
a=','
a=a.join('abcd')
print(a)
|
a,b,c,d
In [135]:
# 소문자를 대문자로 변경
a='hi'
a=a.upper()
print(a)
# 대문자를 소문자로 변경
b='HI'
b=b.lower()
print(b)
|
HI
hi
In [140]:
# 왼쪽 공백 지우기(lstrip)
a=' hi'
print(a)
b=a.lstrip()
print(b)
# 오른쪽 공백 지우기(rstrip)
a='hi '
print(a)
b=a.rstrip()
print(b)
#양쪽 공백 지우기(strip)
a=' hi '
print(a)
c=a.strip()
print(c)
|
hi
hi
hi
hi
hi
hi
In [145]:
# 문자열 바꾸기
a='Life is too short'
print(a.replace('Life','My leg'))
# 문자열 나누기
a='Life is too short'
print(a.split())
b = 'a:b:c:d'
print(b.split(':'))
|
My leg is too short
['Life', 'is', 'too', 'short']
['a', 'b', 'c', 'd']
In [150]:
# format 함수(고급 포맷팅)
a = 'I eat {0} apples'.format(3) #여기서 0은 첫 번째라는 의미, .찍고 format(대입을 원하는 숫자 기입)
print(a)
f = '{0:<10}'.format('hello') #왼쪽으로 정렬하고 자리수는 10
print(f)
z = '{0:>10}'.format('hello') #오른쪽으로 정렬하고 자리수는 10
print(z)
i='{0:=^10}'.format('hi') #중간에 넣을때는 ^으로 넣는다. / 공백을 '='로 채우기
print(i)
k = '{0:0.4f}'.format(3.567892) # 소수점 아래 4자리에서 끊도록 반올림처리
print(k)
|
I eat 3 apples
hello
hello
====hi====
3.5679
In [155]:
# 'I eat five apples'-> 'eight'
a='I eat %s apples' %'five'
print(a)
a='I eat {0} apples' .format('eight')
print(a)
|
I eat five apples
I eat eight apples
In [156]:
#'I ate 10 apples. so I was sick for three days' -> 5.'five'
number=5
day='five'
a='I ate {0} apples. so I was sick for {1} days' .format(number,day)
#c='I ate {} apples. so I was sick for {} days'.format(5,five)
#print(c) 괄호만 써도 가능
print(a)
|
I ate 5 apples. so I was sick for five days
In [153]:
m='{{and}}' .format()
print(m)
|
{and}
In [157]:
a='{0:>10}' .format('hello') # 오른쪽 정렬
b='{0:<10}' .format('hello') #왼쪽 정렬
c='{0:^10}' .format('hello')#가운데 정렬
print(a)
print(b)
print(c)
|
hello
hello
hello
In [160]:
#y=3.451235, 자리수 10
y=3.451235
k = '{0:<0.4f}'.format(y)
print(k)
j = '{0:>10.4f}'.format(y)
print(j)
|
3.4512
3.4512
In [90]:
#1. 김철수씨의 주민번호는 881230-1078523이다.
#주민번호를 연월일 부분과 그 뒤의 숫자부분으로 나누어 출력
a='881230-1078523'
print(a.split('-'))
|
881230
1078523
In [80]:
#2.a[1,3,5,4,2] 리스트를 [5,4,3,2,1]로 변경해서 출력
a=[1,3,5,4,2]
a.sort(reverse=True)
print(a)
|
[5, 4, 3, 2, 1]
In [77]:
#3.['Life','is','too','short'] 리스트를 Life is too short
#문자열로 출력
a=['Life', 'is', 'too', 'short']
print(a[0]+' '+a[1]+' '+a[2]+' '+a[3])
|
In [81]:
#4.문자열을 LIST로 변환하여 ['Life','is','too','short']출력
a='Life is too short'
print(a.split(' '))
|
In [87]:
#5.[1,2,3] 리스트에 값 4를 추가하여 출력
a1=[1,2,3]
a1.append(4)
print(a1)
|
[1, 2, 3, 4]
In [97]:
#6. a 리스트에서 중복 숫자를 제거후 리스트로 출력
a=[1,1,1,2,2,3,3,3,4,4,5]
a=set(list(a))
print(a)
|
{1, 2, 3, 4, 5}
In [99]:
#7.a에서 80과 70을 각각 출력
a={'A':90,'B':80,'C':70}
print(a['B'])
print(a['C'])
|
80
70
In [163]:
#리스트 자료형 복사
#id 함수는 변수가 가리키고 있는 객체의 주소 값을 돌려주는 파이썬 내장 함수
a=[1,2,3]
b=a
a[1]=4
print(a)
print(b)
print(id(a)) #주소값(메모리주소)
print(id(b))
|
[1, 4, 3]
[1, 4, 3]
1489876716616
1489876716616
In [165]:
a=[1,2,3]
b=a[:]
a[1]=4
print(a)
print(b)
print(id(a))
print(id(b))
|
[1, 4, 3]
[1, 2, 3]
1489876863688
1489876214472
In [171]:
#제어문
#if-else
x=1
y=2
if x >=y:
print('x가 y보다 크거나 작습니다.')
else:
print('x가 y보다 작습니다.')
|
x가 y보다 작습니다.
In [174]:
#만약 3000원 이상의 돈을 가지고 있으면 택시를 타고 그렇지 않으면 걸어가라
money=2000
if money >=3000:
print('택시를 타고 가라')
else:
print('걸어가라')
|
걸어가라
In [179]:
#만약 돈이 3000원 이상 있거나 카드가 있으면 택시를 타고 그렇지 않으면 걸어가라
money=2000
card=1
if money>=3000 or card:
print('택시')
else:
print('걸음')
|
택시
In [182]:
#if~elif
x=1
y=2
if x>y:
print('x가 y보다 큽니다.')
elif x<y:
print('x가 y보다 작습니다.')
else:
print('x와 y는 같습니다.')
|
x가 y보다 작습니다.
In [185]:
#for문
scope=[1,2,3,4,5]
for x in scope:
print(x, end=' ')
|
1 2 3 4 5
In [187]:
#for~continue~break
scope=[1,2,3,4,5]
for x in scope:
print(x)
if x <3:
continue
else:
break
|
1 2 3
In [196]:
#range(1,11) 끝 숫자는 포함되지 않음
sum=0
for i in range(1,11):
sum+=i #(sum=sum+i), sum-=i,sum*=i, sum/=i
print(sum)
|
55
In [197]:
marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):
if marks[number] < 60: continue
print('%d번 학생 축하합니다.' %(number+1))
|
1번 학생 축하합니다.
3번 학생 축하합니다.
5번 학생 축하합니다.
In [201]:
for i in range(2,10):
for j in range(1,10):
print(i*j, end=' ')
print('')
|
2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
In [216]:
scope=[1,2,3,4,5]
for i in scope:
if i<4:
print(i)
print('perfect')
scope = [1,2,3,4,5]
for i in scope:
if i<4:
print(i)
elif i>4:
print('perfect')
|
1
2
3
perfect
1
2
3
perfect
In [227]:
# Q. 정수 1 부터 n 까지 더할 때, 그 합이 10만 보다 커지게 되는 n과 합을 구하시오.
n=1
sum=0
while 1: #while 이 1 이면 TRUE 라는 의미
sum = sum+n # 0 + 1
if sum > 100000: # 1은 100000보다 작지 않다.
print(n)
print(sum)
break
n=n+1
# 1 + 1 은 2가 되고 다시 처음부터 시작,
#그 때 100000보다 커지게 되는 n에 해당하는 값을 출력하고 break 하게 된다.
|
447
100128
In [1]:
#while문을 사용하여 1부터 1000까지의 자연수 중 3의 배수의 합 구하기
n=0
b=0
while 1:
if n > 1000:
print(b)
break
b = b+n
n = n+3
n=0
b=0
while 1:
if n==1000:
print(b)
break
elif n%3==0:
b = b+n
n=n+1
|
166833
166833
|