# 2차원 리스트 (다차원 리스트)
aa = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
for i in range(0, 3):
for j in range(0, 3):
print(aa[i][j], end=" ")
print()
list1 = []
list2 = []
value = 1
for i in range(0, 3):
for j in range(0, 4):
list1.append(value)
value += 1
list2.append(list1) # 1차 for문 : [[1, 2, 3, 4]]
list1 = []
print(list2) # [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
for i in range(0, 3):
for j in range(0, 4):
print("%3d" % list2[i][j], end=" ")
print()
# 튜플
tt1 = (10, 20, 30, 40)
print(tt1[0])
print(tt1[1])
print(tt1[2])
print(tt1[3])
print(tt1[1:3])
print(tt1[1:])
print(tt1[:3])
# 튜플끼리 더할 수도 있음
tt2 = ('A', 'B')
print(tt1 + tt2)
tt3 = ((1, 2, 3),
(4, 5, 6),
(7, 8, 9))
for i in tt3:
print(i)
print()
# 튜플 -> 리스트
myTuple = (10, 20, 30)
myList = list(myTuple)
myList.append(40)
for i in myList:
print(i) # 10 20 30 40
print()
myTuple = tuple(myList)
for i in myTuple:
print(i) # 10 20 30 40
# 딕셔너리 : key와 value 쌍으로 구성, {키 : 값}
dic1 = {1 : 'a', 2 : 'b', 3 : 'c'}
print(dic1[1]) # a
print(dic1[2]) # b
print(dic1[3]) # c
student1 = {'학번' : 1000, '이름' : '홍길동', '학과' : '컴퓨터학과'} # 키와 값의 타입은 일치하지 않아도 됨
print(student1)
# 딕셔너리에 값 추가
student1['연락처'] = '010-1234-5678' # {'학번': 1000, '이름': '홍길동', '학과': '컴퓨터학과'}
print(student1) # {'학번': 1000, '이름': '홍길동', '학과': '컴퓨터학과', '연락처': '010-1234-5678'}
# 딕셔너리의 값 수정
student1['학과'] = '파이썬학과'
print(student1) # {'학번': 1000, '이름': '홍길동', '학과': '파이썬학과', '연락처': '010-1234-5678'}
del(student1['학과'])
print(student1) # {'학번': 1000, '이름': '홍길동', '연락처': '010-1234-5678'}
print(student1.get('학번')) # 1000
print(student1.get('학과')) # None : del(~)로 삭제했으므로 데이터 없음
print(student1.keys()) # 키만 리턴 / dict_keys(['학번', '이름', '연락처'])
# 딕셔너리
singer = {}
singer['이름'] = '트와이스'
singer['구성원수'] = 9
singer['데뷰'] = '서바이벌 식스틴'
singer['대표곡'] = 'SIGNAL'
for k in singer.keys():
print('%s --> %s' % (k, singer[k]))
import operator
# 정렬 (sorting)
trainDic, trainList = {}, []
trainDic = {'Thomas': '토마스', 'Edward': '에드워드', 'Henry': '헨리', 'Gothen': '고든', 'James': '제임스'}
print(trainDic)
# 리스트로 변환시켜서 sorting
trainList = sorted(trainDic.items(), key=operator.itemgetter(0)) # 키 기준으로 정렬 (영어)
print(trainList)
trainList = sorted(trainDic.items(), key=operator.itemgetter(1)) # 값 기준으로 정렬 (한글)
print(trainList)
print('------------------------------------------------------------------------------------------------------------------')
foods = {"떡볶이": "오뎅",
"짜장면": "단무지",
"라면": "김치",
"피자": "피클",
"맥주": "땅콩",
"치킨": "치킨무",
"삼겹살": "상추"}
while True:
myFood = input(str(list(foods.keys())) + "중 좋아하는 음식은?")
if myFood in foods:
print('<%s> 궁합 음식은 <%s> 입니다.' % (myFood, foods.get(myFood)))
elif myFood == '끝':
break
else:
print('그런 음식이 없습니다. 확인해 보세요.')
import turtle
import random
# 전역변수 선언
myTurtle, tx, ty, tColor, tSize, tShape = [None] * 6
# print(myTurtle) # None
shapeList = []
playerTurtle = []
sWidth, sHeight = 500, 500
# 메인 코드
if __name__ == '__main__':
turtle.title('거북 리스트 활용')
turtle.setup(width=sWidth + 50, height=sHeight + 50)
turtle.screensize(sWidth, sHeight)
shapeList = turtle.getshapes()
# print(shapeList)
for i in range(1, 100):
random.shuffle(shapeList)
myTurtle = turtle.Turtle(shapeList[0])
# 파이썬은 화면의 정 중앙이 (0,0) 이기때문에 아래와같이 해줘야한다
tx = random.randrange(-sWidth/2, sWidth/2)
ty = random.randrange(-sHeight/2, sHeight/2)
r = random.random()
g = random.random()
b = random.random()
tSize = random.randrange(1, 3)
playerTurtle.append([myTurtle, tx, ty, tSize, r, g, b]) # 100번 돌면서 100개의 리스트가 만들어짐
# print(playerTurtle)
for tList in playerTurtle:
myTurtle = tList[0]
myTurtle.color(tList[4], tList[5], tList[6])
myTurtle.pencolor(tList[4], tList[5], tList[6])
myTurtle.turtlesize(tList[3])
myTurtle.goto(tList[1], tList[2])
turtle.done()
ss = '파이썬짱'
sslen = len(ss)
for i in range(0, sslen):
print(ss[i] + '$', end="") # 파$이$썬$짱$
inStr, outStr = ", "
count, i = 0, 0
inStr = input('\n문자열을 입력하세요 : ')
count = len(inStr)
for i in range(0, count):
outStr += inStr[count - (i + 1)]
print('내용을 거꾸로 출력 --> %s' % outStr)
"""
파일명 : ex2.py
개발자 : Gwak
"""
ss = input('입력 문자열 ==> ')
print('출력 문자열 ==> ', end="")
if ss.startswith('(') == False:
print('(', end="" ) # 첫 글자가 ( 로 시작하지 않으면 False가 아니므로 if문 false -> ( 추가
print(ss, end="")
if ss.endswith(')') == False:
print(')', end="" ) # 끝 글자가 ) 로 끝나지 않으면 False가 아니므로 if문 false -> ) 추가
inStr = ' 한글 Python 프로그래밍 '
# inStr에 공백문자를 제거하고 리턴
outStr = ""
#
# i = 0
#
# for i in range(0, len(inStr)):
# if inStr[i] == " ":
# continue
# elif inStr[i] != " ":
# outStr += inStr[i]
#
# print("원래 문자열 ==> " + '[' + inStr + ']')
# print("공백 삭제 문자열 ==> " + '[' + outStr + ']')
############################################################################
for i in range(0, len(inStr)):
if inStr[i] != ' ':
outStr += inStr[i]
print("원래 문자열 ==> " + '[' + inStr + ']')
print("공백 삭제 문자열 ==> " + '[' + outStr + ']')
inStr = 'Live as if you will die today'
print(inStr.replace('i', '$'))
"""
filename : ex3.py
author : Gwak
date : 2022. 11. 28
"""
ss = input('날짜(연/월/일) 입력 ==> ')
ssList = ss.split('/')
print('입력한 날짜의 10년 후 ==> ', end="")
print(str(int(ssList[0]) + 10) + '년 ', end="")
print(ssList[1] + '월 ', end="")
print(ssList[2] + '일', end="")
"""
title : 거북 글자 쓰기
filename : ex4.py
author : Gwak
date : 22.11.28
"""
# 거북 글자 쓰기
import math
import turtle
import random
from tkinter.simpledialog import *
# 전역변수 선언
inStr = ''
sWidth, sHeight = 500, 500
tx, ty, tSize = [0] * 3
turtle.title('거북 글자 쓰기')
turtle.shape('turtle')
turtle.setup(width=sWidth + 50, height=sHeight + 50)
turtle.screensize(sWidth, sHeight)
turtle.penup()
inStr = askstring('문자열 입력', '거북이 쓸 문자열 입력')
value = 10
angle = 10
dist = 10
for ch in inStr:
rad = 3.141592 * angle / 180
tX = dist * math.cos(rad)
tY = dist * math.sin(rad)
dist -= 200 / len(inStr)
angle += value
r = random.random()
g = random.random()
b = random.random()
turtle.goto(tX, tY)
turtle.pencolor((r, g, b))
turtle.write(ch, font=('맑은고딕', 20, 'bold'))
turtle.done()
"""
title : 거북 글자 쓰기
filename : ex4.py
author : Gwak
date : 22.11.28
"""
# 거북 글자 쓰기
import math
import turtle
import random
from tkinter.simpledialog import *
# 전역변수 선언
inStr = ''
sWidth, sHeight = 500, 500
tx, ty, tSize = [0] * 3
turtle.title('나선 모양의 거북 글자 쓰기')
turtle.shape('turtle')
turtle.setup(width=sWidth + 50, height=sHeight + 50)
turtle.screensize(sWidth, sHeight)
turtle.penup()
inStr = askstring('문자열 입력', '거북이 쓸 문자열 입력')
dist = 200
angle = 0
value = int(360 * 4 / len(inStr))
for ch in inStr:
rad = 3.141592 * angle / 180
tX = dist * math.cos(rad)
tY = dist * math.sin(rad)
dist -= 200 / len(inStr)
angle += value
r = random.random()
g = random.random()
b = random.random()
turtle.goto(tX, tY)
turtle.pencolor((r, g, b))
turtle.write(ch, font=('맑은고딕', 20, 'bold'))
turtle.done()
파이썬에는 pakage의 개념이 없음 -> 모듈
# ex1.py
# tkinter : 파이썬에서 윈도우를 담당하는 모듈
from tkinter import *
window = Tk() # 클래스
window.title('윈도우 창 연습')
window.geometry('400x100') # 창 크기
# window.resizable(width=False, height=FALSE)
label1 = Label(window, text='COOKBOOK~~Python을')
label2 = Label(window, text='열심히', font=('궁서체', 30), fg='blue')
# anchor : 지정한 위치값(NEWS)
label3 = Label(window, text='공부 중입니다.', bg='magenta', width=20, height=5, anchor=CENTER,)
label1.pack()
label2.pack()
label3.pack()
window.mainloop()
# ex2.py
def plus(v1, v2):
result = v1 + v2
return result
hap = 0
hap = plus(100, 200)
print('100과 200 의 plus함수 결과는 %d', hap)
def calc(v1, v2, op):
result = 0
if op == '+':
result = v1 + v2
elif op == '-':
result = v1 - v2
elif op == '*':
result = v1 * v2
elif op == '/':
result = v1 / v2
return result
res = 0
var1, var2, oper = 0, 0,''
oper = input('계산을 입력하세요(+,=,* /)')
var1 = int(input('첫 번째 수를 입력하세요'))
var2 = int(input('두 번째 수를 입력하세요'))
res = calc(var1, var2, oper)
print('## 계산기 : $d %s %d = %d' % (var1, oper, var2, res))
# ex3
def func1():
a = 10
print('func1()에서 a값 %d' % a)
def func2():
print('func1()에서 a값 %d' % a)
a = 20 # 전역변수
func1()
func2()
def func3():
global b # 전역변수
b = 20
print('func3()에서 b값 %d' % b)
def func4():
print('func3()에서 b값 %d' % b)
func3()
func4()
# ex4.py
def multi(v1, v2):
reList = []
res1 = v1 + v2
res2 = v1 - v2
reList.append(res1)
reList.append(res2)
return reList
myList = []
hap, sub = 0, 0
myList = multi(100, 200)
hap = myList[0]
sub = myList[1]
print('multi()에서 돌려준 값 ==> %d, %d' % (hap, sub))
def para_func(v1, v2, v3 = 0):
result = 0
result = v1 + v2 + v3
return result
hap = 0
hap = para_func(10, 20)
print('매개변수 2개의 계산결과 ==> %d' % hap)
hap = para_func(10, 20, 30)
print('매개변수 3개의 계산결과 ==> %d' % hap)
# ex5
def para_func(*para): # (*인수) : 가변인수와 유사한 개념
result = 0
for num in para:
result += num
return result
hap = para_func(10, 20)
print('%d' % hap)
hap = para_func(10, 20, 30)
print('%d' % hap)
hap = para_func(10, 20, 30, 40)
print('%d' % hap)
# ex6
import random
def getNumber():
return random.randrange(1, 46) # 1 ~ 45 범위
lotto = []
num = 0
print('*** 로또 추첨을 시작합니다. ***')
while True:
num = getNumber()
if lotto.count(num) == 0: # count가 0 : 리스트 내에 번호가 없다.
lotto.append(num)
elif len(lotto) >= 6:
break
print('추첨된 로또 번호 ==> ', end="")
lotto.sort() # 간단하게 정렬
for i in range(0, 6):
print('%d' % lotto[i], end=", ")
## 함수 선언 부분 ##
def func1() :
print("Module1.py의 func1()이 호출됨.")
def func2() :
print("Module1.py의 func2()가 호출됨.")
def func3() :
print("Module1.py의 func3()이 호출됨.")
# ex7.py
# 모듈 import
from Module1 import *
func1()
func2()
func3()
# myTurtle.py
import random
from tkinter.simpledialog import *
def getString():
resStr = ''
resStr = askstring('문자열 입력', '거북이 쓸 문자열 입력')
return resStr
def getRGB():
r, g, b = 0, 0, 0
r = random.random()
g = random.random()
b = random.random()
return (r, g, b)
def getXYAS(sw, sh): # X, Y, angle, size
x, t, angle, size = 0, 0, 0, 0
x = random.randrange(-sw / 2, sw / 2)
y = random.randrange(-sh / 2, sh / 2)
angle = random.randrange(0, 360)
size = random.randrange(0, 50)
return [x, y, angle, size]
from myTurtle import *
import turtle
# 전역변수 선언
inStr = ''
sWidth, sHeight = 300, 300
tx, ty, tAngle, txtSize = [0] * 4
turtle.title('거북 글자 쓰기(모듈 버전)')
turtle.shape('turtle')
turtle.setup(width=sWidth + 50, height=sHeight + 50)
turtle.screensize(sWidth, sHeight)
turtle.penup()
turtle.speed(5)
inStr = getString()
for ch in inStr:
tx, ty, tAngle, txtSize = getXYAS(sWidth, sHeight)
r, g, b = getRGB()
turtle.goto(tx, ty)
turtle.left(tAngle)
turtle.pencolor((r, g, b))
turtle.write(ch, font=('맑은고딕', txtSize, 'bold'))
# ex9.py
import sys
print(sys.builtin_module_names)
import math
print(dir(math)) # math 내부의 함수 리턴
# ex1.py
# tkinter : 파이썬에서 윈도우를 담당하는 모듈
from tkinter import *
window = Tk() # 클래스
window.title('윈도우 창 연습')
window.geometry('400x100') # 창 크기
# window.resizable(width=False, height=FALSE)
label1 = Label(window, text='COOKBOOK~~Python을')
label2 = Label(window, text='열심히', font=('궁서체', 30), fg='blue')
# anchor : 지정한 위치값(NEWS)
label3 = Label(window, text='공부 중입니다.', bg='magenta', width=20, height=5, anchor=CENTER,)
label1.pack()
label2.pack()
label3.pack()
window.mainloop()
# ex2.py
from tkinter import *
window = Tk()
photo1 = PhotoImage(file='GIF/dog2.gif') # 클래스. 대문자로 시작되는것은 모두 클래스
photo2 = PhotoImage(file='GIF/dog3.gif')
label1 = Label(window, image=photo1)
label2 = Label(window, image=photo2)
label1.pack()
label2.pack()
window.mainloop()
from tkinter import *
window = Tk()
window.geometry('400x400') # 창 크기
button1 = Button(window, text='파이썬 종료', fg='red', command=quit)
button1.pack()
window.mainloop()
from tkinter import *
from tkinter import messagebox
def myFunc():
messagebox.showinfo('강아지 버튼', '강아지가 귀엽죠?^^')
window = Tk()
photo = PhotoImage(file='gif/dog5.gif')
button1 = Button(window, image=photo, command=myFunc)
button1.pack()
window.mainloop()