TIL 2022-11-28 Python 3일차

JYR00·2022년 11월 28일
0

TIL

목록 보기
41/60

다음주는 크롤링할 것이다.
1차원 리스트
aa = [10,20,30]
aa = [[]
]
ch07의 ex5부터 시작함.

ex6

# 튜플
tt1 = (10,20,30,40)
print(tt1[0])
print(tt1[1])
print(tt1[2])
print(tt1[3])

print(tt1[1:3]) # (20, 30)
print(tt1[1:]) # (20, 30, 40)
print(tt1[:3]) # (10, 20, 30)

tt2 = ('A','B')
print(tt1 + tt2) # (10, 20, 30, 40, 'A', 'B')
print(tt2 * 3) # ('A', 'B', 'A', 'B', 'A', 'B')

tt3 = ((1,2,3),
       (4,5,6),
       (7,8,9))
for i in tt3:
    print(i)
    # (1, 2, 3)
    # (4, 5, 6)
    # (7, 8, 9)

    # 튜플 => 리스트
    myTuple = (10,20,30)
    myList = list(myTuple)
    myList.append(40)
    for i in myList:
        print( i)

    myTuple = tuple(myList)
    for i in myList:
        print(i)
# 10
# 20
# 30
# 40

ex7

# 딕셔너리 : key와 value 쌍으로 구성
dic1 = {1:'a', 2:'b', 3:'c'}
print(dic1)
# {1: 'a', 2: 'b', 3: 'c'}

student1 = {'학번':1000, '이름':'홍길동','학과':'컴퓨터학과'}
print(student1)
# {'학번': 1000, '이름': '홍길동', '학과': '컴퓨터학과'}
# 타입이 일치하지 않아도 잘 출력이 된다.

student1['연락처'] = '010-2222-3333'
print(student1)
# {'학번': 1000, '이름': '홍길동', '학과': '컴퓨터학과', '연락처': '010-2222-3333'}

# 수정
student1['학과'] = '파이썬학과'
print(student1)
# {'학번': 1000, '이름': '홍길동', '학과': '파이썬학과', '연락처': '010-2222-3333'} 수정

# 삭제
del(student1['학과'])
print(student1)
# {'학번': 1000, '이름': '홍길동', '연락처': '010-2222-3333'}

# 찾기
print(student1.get('학과'))
# none

print(student1.get('이름'))
# 홍길동

print(student1.get('홍길동'))
# key 값을 찾아야함 => none

# key값 리턴하기
print(student1.keys())


:사이에 공백이 있으면 안된다

ex8


singer={}
singer["이름"] = "트와이스"
singer['구성원수'] = 9
singer['데뷔'] = '서바이벌 식스틴'
singer['대표곡'] = 'SIGNAL'

for k in singer.keys() :
    print("%s --> %s"%(k, singer[k]))
    # 이름 --> 트와이스
    # 구성원수 --> 9
    # 데뷔 --> 서바이벌 식스틴
    # 대표곡 --> SIGNAL

ex9

import operator

trainDic, trainList = {}, []
# 딕셔너리, 리스트

trainDic = {'Thomas':'토마스', 'Edward':'에드워드', 'Henry':'헨리', 'Gothen':'고든', 'James':'제임스'}
print(trainDic)
# {'Thomas': '토마스', 'Edward': '에드워드', 'Henry': '헨리', 'Gothen': '고든', 'James': '제임스'}

trainList = sorted(trainDic.items(), key=operator.itemgetter(0))
print(trainList)
# [('Edward', '에드워드'), ('Gothen', '고든'), ('Henry', '헨리'), ('James', '제임스'), ('Thomas', '토마스')]

trainList = sorted(trainDic.items(), key=operator.itemgetter(1))
print(trainList)
# [('Gothen', '고든'), ('Edward', '에드워드'), ('James', '제임스'), ('Thomas', '토마스'), ('Henry', '헨리')]


# 음식을 치면 궁합 음식을 출력해준다
foods = {"떡볶이":"오뎅",
            "짜장면":"단무지",
            "라면":"김치",
            "피자":"피클",
            "맥주":"땅콩",
            "치킨":"치킨무",
            "삼겹살":"상추" };

# key값을 list로 변환해 출력
while True:
    myFood = input(str(list(foods.keys())) + "중 좋아하는 음식은?")
# ['떡볶이', '짜장면', '라면', '피자', '맥주', '치킨', '삼겹살']중 좋아하는 음식은?

    if myFood in foods:
        print("<%s> 궁합 음식은 <%s>입니다." %(myFood, foods.get(myFood)))
    elif myFood == "끝":
        break
    else:
        print("그런 음식이 없습니다. 확인해보세요")

10년 뒤 출력하기

'''
filename : ex3.py
author : JYR
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='')
# 날짜(연/월/일) 입력 ==> 22/11/28
# 입력한 날짜의 10년 후 ==> 32년11월28일

ex10

import turtle
import random
# 거북이로 뭔가 만들기
#전역변수 선언
myTurtle, tx, ty, tColor, tSize, tShape = [None]*6
# print(myTurtle)
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)
    # ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle', 'turtle']

    for i in range(1,100):
        random.shuffle(shapeList)
        myTurtle = turtle.Turtle(shapeList[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])

    # print(playerTurtle)
    # 리스트 100개 생성됨

    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()

ch08
ex1


ss = '파이썬 짱'

sslen = len(ss)
for i in range(0,sslen):
    print(ss[i] + '$', end='')
    # 파$이$썬$ $짱$



거북이 글자 무작위 출력하기

'''
title : 거북 글자 쓰기
filename : ex4.py
author : JYR
date : 22.11.28
'''

import turtle
import random
from tkinter.simpledialog import *

# 전역변수
inStr = ''
swidth, sheight = 300,300
tx, ty ,fontSize= [0]*3

turtle.title('거북 글자 쓰기')
turtle.shape('turtle')
turtle.setup(width=swidth+50, height=sheight+50)
turtle.screensize(swidth,sheight)
# turtle.pendown()
turtle.penup()

inStr = askstring('문자열입력', '거북이 쓸 문자열을 입력')

for ch in inStr:

    tx = random.randrange(-swidth/2, swidth/2)
    ty = random.randrange(-swidth/2, swidth/2)
    r = random.random()
    g = random.random()
    b = random.random()
    txtSize = random.randrange(10,50)



    turtle.goto(tx,ty)
    turtle.pencolor((r,g,b))
    turtle.write(ch, font=('맑은고딕', txtSize, 'bold'))

turtle.done()
#     여러줄이면 세미콜론이 있어야 한다

거북이 나선모양 글자쓰기

'''
title : 거북이 나선모양 글자쓰기

'''

import turtle
import random
import math
from tkinter.simpledialog import *

# 전역변수
inStr = ''
swidth, sheight = 500,500
tx, ty, txtSize = [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*2 / 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()
    txtSize = random.randrange(10,20)
    # txtSize = random.randrange(10,50)



    turtle.goto(tx,ty)
    turtle.pencolor((r,g,b))
    turtle.write(ch, font=('맑은고딕', 20, 'bold'))

turtle.done()

jsp 결제 시스템 선생님 블로그
https://blog.naver.com/simba222/222076054838

ch09 ex1

커피자판기 시스템

#ex1.py
# 전역변수
# function제작
coffee = 0
def coffee_machine(button):
    print()
    print('#1.뜨거운 물을 준비한다')
    print('#2.종이컵을 준비한다')
    
    if coffee == 1:
        print('#3.보통커피를 탄다')
    elif coffee == 2:
        print('#3.설탕커피를 탄다')
    elif coffee == 3:
        print('#3.블랙커피를 탄다')
    else:
        print('#3.아무거나 탄다\n')
        
    print("#4. 물을 붓는다.");
    print("#5. 스푼으로 젓는다.");
    print()

# 여기까지 function

coffee = int(input("어떤 커피를 드릴까요?(1.보통 2.설탕 3.블랙)"))
coffee_machine(coffee)
print("A손님 여기 커피있습니다");

coffee = int(input("어떤 커피를 드릴까요?(1.보통 2.설탕 3.블랙)"))
coffee_machine(coffee)
print("B손님 여기 커피있습니다");
print();
coffee = int(input("어떤 커피를 드릴까요?(1.보통 2.설탕 3.블랙)"))
coffee_machine(coffee)
print("C손님 여기 커피있습니다");

# 함수와 메서드의 차이점
# 메서드는 반복되는 일을 사용할 때 많이 사용됨

계산시스템

# 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))

메서드 만들기

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 = 10
    print('func3()에서 b값 %d' %b)

def func4():
    print('func4()에서 b값 %d' %b)


func3()
func4()

메서드 계산2


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.py
# 더 재밌는 문법
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.py

import random
def getNumber():
    return random.randrange(1,46) #1~45 범위
lotto = []
num = 0

print('*** 로또 추첨을 시작합니다 ***\n')
while True:
    num = getNumber()
    if lotto.count(num) == 0:
        lotto.append(num)
        # lotto 에 들어가있는 'n'의 개수
    # 리스트 안에는 반복된 값이 들어갈 수 있다.
    # count로 반복된 값을 없앨 수 있다

    if len(lotto) >= 6:
        break

print('추천된 로또 번호 ==> ', end='')
lotto.sort()
for i in range(0,6):
    print('%d' % lotto[i], end=', ')

모듈1과 함수 호출

## 함수 선언 부분 ##
def func1() :
    print("Module1.py의 func1()이 호출됨.")

def func2() :
    print("Module1.py의 func2()가 호출됨.")

def func3() :
    print("Module1.py의 func3()이 호출됨.")

함수호출

# Module1의 메서드를 호출하였다
from Module1 import *
func1()
func2()
func3()

거북이 글자 마음대로 쓰기(모듈버전)

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'))

turtle.done()

모듈과 math

#ex9

import sys

print(sys.builtin_module_names)

import math
print(dir(math))
# math 안에 있는 함수가 리턴된다

화면 폰트 조절

#ex1

# tkinter : 윈도우 담당 모듈
from tkinter import *

window = Tk()
window.title('윈도우 창 연습')
window.geometry('400x100')
# window.resizable(width=FALSE, height=False) #FALSE와 False 둘 다 가능

label1 = Label(window, text='COOKBOOK~~ Python을 ')
label2 = Label(window, text='열심히',font=('궁서체',30), fg='blue')
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()

photo = PhotoImage(file='gif/dog.gif')
# photo = PhotoImage(file='ㅎ/dog.gif')
# 대소문자 구별 안한다
label1 = Label(window, image=photo)

label1.pack()

window.mainloop()
# 대문자로 시작하는 건 클래스라고 생각하면 좋음

버튼 만들기

from tkinter import *
window = Tk()
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/dog2.gif')
button1 = Button(window, image=photo, command=myFunc)
# 사진 클릭하면 창이 뜬다


button1.pack()

window,mainloop()





















0개의 댓글