1.함수: 짧은코드 재사용 보기편함

def f(x):

    y=2x

    return y

 

1_1)입력과 출력이 비어있는 함수 void() 

def hello():

    print("안녕 파이썬")

    print("함수")

print("hi python")

hello()

print("function")

 

hi python
안녕 파이썬  #hello()부분
함수
function

 

1_2)리턴이 있는 함수 :디폴트파라미터

def func(a=9,b=9):

    y=100*a+10*b+1

    return y

print(func(3,5))

print(func(1))

print(func())   #func()=func(9,9)

 

351

191

991

 

 

1_3)sine함수 (사인 코사인 탄젠트): import math 선언

 

1_4)함수로 거북이 그림만들기

import turtle as t

def sqr(x,y):

    t.goto(x,y)

    t.pendown()

    t.begin_fill()          #begin_fill()이량 fillcolor("")   end_fill()는 세트로

    t.fillcolor("green")

    for i in range(4):

        t.forward(100)

        t.left(90)

    t.end_fill()

    t.penup()

    return 0              #없어도 무관

 

#여기서부터 실행

t.shape("turtle")

t.penup()

t.speed(10)               #너무 느려서 삽입

 

for x in range(-150,150,150):   

    for y in range(-150,150,150):

        sqr(x,y)

 

 #for x in range(12,3,) 3번째 숫자는 도형 사이의 간격을 의미. 한변의 길이가 100인 사각형을 설정했으므로                                           150을 입력하면 50간격의 사각형을 생성

예제)정삼각형 색칠하는 거북이

 

import turtle as t

def tri(x):
    t.home()
    t.pendown()
    t.begin_fill()
    t.fillcolor("pink")
    t.circle(x,360,3)                #반지름의 길이, 다각형의 각, n각형
    t.end_fill()
    t.penup()
    return 0


#여기서부터 실행
x=int(input("정삼각형의 한변의 길이: "))
t.shape("turtle")
t.penup()
tri(x)

예제)삼각형의 밑변과 높이를 입력받아 삼각형의 넓이를 계산해주는 프로그램을 함수를 이용해 만들기.

거북이로 넓이까지 색칠해보기. (좌표 이용해서 그리기)

#삼각형 넓이 구하는 함수 f(a,b)는 return y를 첨가해줘야 TypeError: must be real number, not NoneType 가 뜨지 않음

 

2.반복문 while반복문, for반복문

 

while반복문: 참(true)인 경우동안 반복실행. 거짓(false)가 되면 반복 종료

 while 조건문:

     명령문

 

for문: 

 for 변수 in range(시작값, 종료값, 증가값):

     명령분

 

break: 반복문이 완료되지 않은 상황이라도 반복문 밖으로 이동

continue: 반복문 하단부분 실행않고 반복문 시작으로 이동

 

예제) 100부터 5씩 증가하여 150까지 출력하는 프로그램

while 이용>

n=100
while n<=150:
    print(n)
    n+=5
print("종료")

 

for문 이용>

for i in range(100,150,5):
    print(i)
print("end")

 

 

예제) 구구단 3단 

print("구구단 3단=====")

n=1
while n<=9:
    print("3*%d= %2d"%(n,3*n))
    n+=1
  

예제) 원하는 구구단 출력해주기

 

예제)3의 배수 더하기 while 이용/ for 이용  #들여쓰기를 잘하자!!

 

for()의 첫번재 파라미터는 0으로 간주, 세번째 파라미터는 생략하면 1로 간주 

for(11) == for(0,11,1)

 

for n in range(5):

   명령문

 

n=1              #동일하다.

while n<=5:     

    명령문 

    n+=1        #이 행을 추가하지 않으면 영원히 명령문 출력. crtl+c로 탈출해야한다\

 

 

2_1)break으로 탈출하기

예제) 원하는 구구단 출력하고, 2~9사이의 정수가 아닌경우 다시 입력받기

#2~9사이의 정수를 맞게 입력하면 break으로 탈출하여 for문으로 이동

while 이랑 if, break이랑 같이 쓰기

else에서 새로 입력하지 않으면 print 무한반복 되므로 다시 입력창 넣어주기

 

 

예제1) for문을 사용하여 50부터 100까지의 정수중에 3으로 나눠떨어지거나 5로 나눠떨어지는 수들의 합계를 구하라

#indent 주의할것

sum+=i가 왼쪽으로 나오면 3725가 나온다. 50~100까지의 합이 출력됨 if문보다 들여쓰기가 되어야 조건에 해당하는 값만 설정됨

 

예제2)반지름의 길이를 10,20,30,,,100으로 변화시키면서 원을 10개 그리는 turtle 프로그램

 

1.양식문자를 이용한 표현 %d %s %g(정수혹은 실수) %f =>print()를 깔끔하게 표현가능

x=10

y=3

print(" %d와 %d를 나눈 값은 %f 이다" %(x,y,x/y))

>>> 10와 3를 나눈 값은 3.333333이다.

 

뒷부분 %변수 앞뒤로 , 없음 

 

1_1) 적정키와 몸무게를 구하라  %.1f (소수점 둘째자리에서 반올림하여 소수점 첫째자리까지 출력)

print("=====몸무게 제안 프로그램=====")
h= float(input("키입력: "))
w=(h-100)*0.9
print("키 %.2fcm에 대한 적정 몸무게는 %.2fkg입니다." %(h,w))

 

1_2) 16진수 표현하기, %3d %3o %3x (숫자만큼의 자릿수로 정수표시. 숫자들 정렬가능)

x=1234

y=2021

print("%5x+%5x=%5x" %(x,y,x+y))

>>>  4d2+  7e5=  cb7   #16진법으로 표현한것

 

print("%-5x+%-5x=%-5x" %(x,y,x+y)) #-10d (-)는 왼쪽정렬 (%-.1f)

>>>4d2  +7e5  =cb7     

 

2,format() 함수: 양식문자사용. 주로 shell에서

 

n=123456.123456

format(n,'>15,.2f')    #우측정렬, 15칸, 3자리마다 콤마, 소수점2자리

 

2_1)문자열 format()  #%d 표기법이랑 .format() 표기법

 

x=10

y=5

"x is {} and y is {}".format(x,y)   #콘솔,쉘에서 가능 코드편집기에서는 안됨

 

2_2)파라미터 순서정하기

>>>"first is {2}, second is {1}, last is {0}".format(1000,2000,3000)  #{}안에 0부터 n-1까지 index.

first is 300, second is 200, last is 100

 

2_2.1) {인덱스: 형식문자}

>>>"수출액 {0:,d}달러".format(100000000)  #콤마 삽입한 형태

수출액 100,000,000달러

 

>>>"지표는 {0:10,.2f}".format(1234.56789)

지표는    1,234.57

 

예제) 저축액을 입력받아 1년후의 이자와 원리금(원금+이자)을 출력해주는 프로그램을 작성하시오. 이자율을 3.75%, 이자에 대한 세금은 15%로 계산하라. format함수를 이용해서 천단위 쉼표출력과 열맞춤이 이뤄지도록 하라.

===원리금 계산프로그램===

저축금액 입력:  5000000

원금:           5,000,000원

이자:             187,500원

세금:               28,125원

최종:           5,159,375원

 

#이자, 세금, 최종의 인덱스 0,1,2,를 안 넣고 {:13.0f}라고 설정해도 똑같이 출력 되지만 배운거 복습하려고 index 삽입해봄. 나는 깔끔한게 좋아서 다음에는 인덱스 안넣을 것 같다.

#처음에 {:13,d}라고 설정해서 계속 에러남. .0f로 적으니까 에러가 사라졌다. 이자율을 곱했기 때문에 결과값이 float가 되는데 실수를 정수로 표현하려면 .0f로 설정할것

 

3.조건문 제어문: if elif else #c나 java에는 switch문이 있는데 파이썬에는 없다.

 비교(관계)연산자:  == >= !=

 논리연산자: and(&) or(|) not(~)  true:1 false:0  참,거짓은 첫글자가 대문자다(True, False)

 

==연산자는 값(value)가 같은지 비교

is 키워드는 메모리 주소를 비교. 100이나 200같이 자주 사용하는 몇개의 값들을 메모리에 기본적으로 생성하고

주소와 연결시키는 경우가 있다. 그래서 False가 기본값이다

ex) a=100 ; b=100

    a is b

    True

 

    a= 300       #a=300; b=300이면 True라고 나옴ㅋㅋㅋ 뭐지..

    b=300

    a is b

    False           

 

예제)한국과 베트남의 시차를 계산하는 프로그램을 만들라. 시간은 24시간 단위로 입력받고 한국은 베트남보다 시차가 2시간 빠르다. 한국시간을 받아서 베트남시간으로 변환

3_1) 짝수 홀수 판변 프로그램 (while 1: 이용  (while True:)

 

while 1: 을 입력하면 반복하여 작동한다. (while True:와 같은 뜻이다.)

 

n=int(input())을 while 1:보다 먼저 쓰면 print가 무한반복 된다. while 다음에 input 적기

 

if n%2==0을 먼저 적으면 음수값이 제대로 print되지 않음  #??이유는 모르겠다. 

if n<=0을 먼저 적고 n%2==0을 elif값으로 줄것.   

 

예제) 결석이 3회미만, 성적이 70점이상이면 pass. 결석 3회이고 성적이 50점이상 70미만이면 재시험가능. 결석이 한번도 없다면 재시험가능.

#c나 java에서는 50<=a<70을 지원하지 않는다. a>=50 a>70이라고 적어야함

 

예제) 주차료 계산. 

15분이하 무료

15초과 30분이하 3천원

30분초과 15분초과마다 1000원추가. 

예제) 양의정수를 입력받아 2의배수 3의배수 5의배수여부를 판단하는 프로그램을 작성하시오. 만약 10을 입력하면 10은 2의배수, 3의배수는 아님. 5의배수.라고 3문장이 출력되도록 한다.

if elif else를 사용할 수 없다.

if, elif~는나열된 조건중에 해당하는 하나만 출력. 그래서 2의배수, 3의배수 등 순서대로 내려오다가 걸리는것 하나 출력

 

 

1.파이썬은 c나 java와는 다르게 변수의 자료형을 지정하지 않는다.

 type() 함수로 데이터타입을 확인할 수 있다.

 동적데이터타입변환  #같은 변수에 데이터 여러번 입력가능

 

2.데이터타입변환 숫자, 문자열

x="2019"

y="2020"    #문자열데이터타입이므로 x-y 불가.

 

>>>x=int("2019")

>>>y=int("2020")

>>>x-y

-1

>>>type(x)

<class 'int'>

 

#데이터타입변환없이 숫자계산

>>>x="2019"

>>>y="2020"

>>>int(x)-int(y)

-1

>>>type(x)

<class 'str'>

 

3.정수와 실수의 정확도

import sys

sys.getsizeof()   #byte크기를 나타냄.

 

#정수는 자동적으로 크기저장. 정확

#실수는 소수점아래 16자리까지만 표현. 

 

4. ord(), bin(), 아스키코드

x="a"     #변수를 str로 지정. 따옴표이용

ord(x)

>>>97

bin(ord(x))    #bin()함수는 반드시 ord()를 이용해 숫자로 변환한 뒤 입력해야함 

>>>0b1100001

 

예제) KIM이라는 문자열이 메모리에 2진수로 어떻게 표현되는지 확인해보자. 각 문자를 변수로 지정한 후 ord 및 bin 함수를 사용하여 출력해보자.

5.input()   #기본적으로 문자열(str)로 인식한다. 숫자로 받아서 계산하려면 int(input()) float(input())으로 변환해야함.

name=input("이름이 무엇입니까?") 가능

 

예제) 자동챗봇만들기

#파이썬은 c나 java와 달리 세미콜론(;)이용해서 같은줄에 함수를 여러개 쓸 수 있다.

 

예제)번역프로그램 -구글 번역기와 연동

#웹브라우저 주소를 제대로 쓰고 +text라고 입력해야 자동번역됨.

 

5-1)정수입력.   

 변수=int(input(""))

 

1_  year=input("몇년생인가?")

age=2021-int(year)+1    #int()를 쓰지 않으면 str 과 int의 type error 발생

print("올해",age,"살이군요.")

 

#실수는 float(input())

 

 

예제) 태어난 달의 달력 출력하기

 

import calendar

 

year=int(input("당신이 태어난 년도는?"))

month=int(input("당신이 태어난 달은?"))

print("당신이 태어난 달의 달력입니다.")

calendar.prmonth(year,month)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6. 거북이 모듈로 그림그리기

 

import turtle

turtle.shape("turtle")

turtle.shapesize(5)

turtle.forward(200)

turtle.right(90)   #각도만큼 회전

turtle.backward(200)

turtle.home()

turtle.clear()

turtle.shape("arrow")     #square, circle, triangle, classic(shape 함수 실행안할때 기본형)

turtle.color("red")

 

1_) turtle 객체 여러개 사용할때

import turtle

t1=turtle.Turtle(); t1.shape("turtle")

t2=turtle.Turtle(); t2.shape("turtle")

t1.color("yellow"); t1.forward(200)

t2.color("purple"); t2.backward(100)

 

2_)간결하게 t로 생성

import turtle as t   #혹시 .py이름이 turtle 이면 실행 안됨

t.forward(200)

t.circle(50)   #힘겹게 원을 그리는데 귀엽다.

 

for i in range (4):     #같은작업은 4번 반복한다.

      t.forward(300)

      t.right(90)

 

 

3_)선분의 길이 textinpu()으로 입력받기

 

temp=t.textinput("사각형", "한변의 길이:")     #그냥 t.textinput()이라고 입력하면 에러가 발생

size=int(temp)   #따로 입력창이 뜬다.

 

4_)다각형 그리기

 

 

5_)좌표를 이용하여 그리기 goto(x,y) 함수 이용, write(text)

6_) fillcolor()이용

 

t.fillcolor()만 설정하거나, begin_fill() 있고 end_fill() 없으면 처음에 arrow만 노랗게 칠해짐

 

7_)circle()함수를 이용해서 간단하게 다각형 그리기

import turtle as t
n=int(t.textinput("다각형","몇각형을 원하니?"))
t.circle(150,360,n)

 

 

7.penup() pendown() 함수 -좌표축 생성가능, write()함수 좌표표시

 

7_1. y=x 그래프그리기

7_2.원 그리는 거북이. speed()함수

스피드는 0~10까지의 값. 10이상의 값은 10과 동일한 속도

 

 

turtle 함수 정리>>

shape()

shapesize()

register_shape() : 이미지파일로 개체모양 설정가능

home()

clear()

right/left()

forward()

backward()

goto(x,y)

circle()

dot.() : 크기가 ()인 점을 그린다

width() : 펜의 두께

color()

pencolor()

bgcolor() background color

bgcolor(r,g,b)

screensize(x,y)

penup()

pendown()

Screen() 배경화면을 가져온다

bgpic()

xcor() x위치 리턴

ycor()

setx(a) x축의 a위치로 이동 y위치 유지

sety(b)

distance(x,y) 현재 거북이의 위치와 (x,y)좌표거리를 계산하여 리턴

 

 

 

 

 

 

1. 파이썬은 귀도반로섬이 개발. 쉽다. 인터프리터 방식이다(컴파일러는 java, c), 오픈소스 라이브러리 개발

 

 

2.import math 입력시 다양한 수학계산 가능

     import math

     5*5*math.pi

3.from math import*  입력시 math. 필요없음.

     from math import*

     5*5*pi

4. >>>(프롬프트 표시), 파이썬의 한줄주석은 # (java는 //) : 여러줄 주석은 """aa """ 또는 '''aa''' (java는 /*aa*/)

5. 파이썬은 한글도 변수이름 지정가능

6. 소스코드를 작성하고 마지막줄에 input() 넣어야 name.py 파일이 실행된다. 

 

 

7. 연산자

  /: 실수나누기 소수점까지 

 //: 정수나누기 몫 (10.0//2=5.0    10//2=5)

 %: 나머지

**: 거듭제곱

 ex)5**(1/2)    같은 결과값으로 sqrt(5)

 

8.c나 java와 달리 파이썬은 overflow가 없다. (overflow: 계산값이 커져서 잘못 연삼됨)

9. format(2**10,",")   #format함수. 큰수에 ,로 구분

 >>>'1,024' 

 

 

 

10.변수

   변수는 변하는 값, 메모리 저장공간, 숫자, 문자, 텍스트, 벡터(리스트)도 가능

 

 변수이름:  대소문자를 구분, 한글변수 가능, 숫자로 시작불가 (ex) 1x), 특수문자, 공백불가 언더라인(_)가능,

 지정 키워드불가( for while break continue) for1은 가능

 

등호연산자: =(assign) 대입. (변수이름 = 수식)

+=: 덧셈하고 대입한다  . x+=a   x=x+a     #c나 java에서는 ++을 사용. 파이썬은 ++지원안함 

**=: 거듭제곱하고 x**=a   x=x**a

 

예제) 매년 물가상승률이 5%. 20년후 물가는 현재의 몇배인가

        현재 대학등록금이 300만원일대, 20년후 대학등록금은?

 

>>>x=0.005    #x=물가상승률

>>>x=(1+x)**20

>>>print("20년후 물가상승률",x,"배이다.")

 

>>>y=300_0000  #y=대학등록금

>>>y*=x

>>>print("20년후 대학등록금은",y,"원이다.")

 

**소수점 아래가 너무 길어서 지저분한데 어떻게 적당하게 줄일 수 있을까??

 

 

 

11. print 함수

 print함수는 숫자, 변수, 수식을 출력할 수 있다.

shell모드에서는 print 없이도 값을 출력하지만 코드편집기 모드에서는 print()필수

 

문자열함수 "a", 'a' (c나 java는 "a"만 가능)

 

12. time.sleep(1) 괄호속의 숫자동안(sec) 멈춘다. 처음에 import time 선언해야함

>>>import time

>>>print("안녕 반가워")

>>>time.sleep(1)

>>>print("나는 Bomme이야.")

 

**잠시 pause 함으로써 컴퓨터와 대화하는 느낌을 낼 수 있다.

 

13.import winsound

    winsoudn.Beep(600,500)    (600: 소리의 높이, 음색, 500:출력시간(msec), 0.5sec)

 

노래출력.

import winsound

import time

 

음계={'도':523, '레':587, '미':659, '파':698, '솔':783, '라':880, '시':987, '또':1046}

학교종= "솔솔라라솔솔미 솔솔미미레 솔솔라라솔솔미 솔미레미도"

 

for i in 학교종 :

     if i=='':

         time.sleep(1)

     else :

         winsound.Beep(음계[i], 300)

 

**마지막줄에서 key error ' '이 발생해서 노래가 끊긴다....  공부 더 해서 해결해야지

 

14. print함수에서 따옴표도 출력하기.

    " ' ' "   강조하는 문자열에 서로 다른 따옴표를 쓰기

    ' " " ' 

    " \" \" "     \": escape 문자. 

    ' \' \'  '

 

15.  여러줄 입력하기.  여러줄 주석처럼 """ """ 혹은 ''' ''' 으로 작성

     print("""파이썬 공부한다

     랄라라라라

     책한권 끝내자.""")

>>> 파이썬 공부한다.

>>> 랄라라라라

>>>책한권 끝내자.

 

 

16.개행문자( 행을 새롭게 연다.) \n

\n 새로운줄

\t 탭 (4칸 띄움)

\' '자체 출력

\" "자체출력

\\ \자체 출력   #원화기호를 출력할때는 반드시 \\ 으로 작성

\b 역방향 한문자 지움. shell에서는 안될수도 있다.

 

17. 글자뒤에 한칸 띄우기 =같은줄 출력   #print()함수를 여러개 쓰면 자동으로 새로운줄에 출력됨

   print("Hello", end=" ")  끝문자 빈칸지정.

   print("hello", end=" ")   

   print("Hello", "hello")   ,를 사용

>>>Hello hello

 

   sep="구분자"

print("Hello", "hello", "python", sep=",") >>> Hello,hello,python  

 

예제)print 함수에 end 파라미터를 설정하여 한줄로 출력되도록 수정하라. 파이썬은 쉽지만 유용한프로그램

print("파이썬은 쉽지만" end=" ")

print("유용한 프로그램", end=" ") 

 

 

+ Recent posts