대학교/대학 과제
[프로그래밍활용] Python Workspace Mid Term
Anthon.P
2021. 8. 21. 05:23
#출력문
print('Python Programming')
print('Python', 'Programming')
print('Python sum', 1+2)
# string과 연산으로 혼합되어있는 문장
print('Python', 'Programming', sep = '***')
# 속성 설정 구분자 sep(쉼표에 대해서 추가설정)
# 공백구분자를 ***로 치환
# 아래의 명령을 사용해서 공백없이 문자열을 연결해보세요
print('Python', 'Programming', sep = '')
print("Python", end = "")
print("Programming")
# end 기능으로 줄바꿈 기능이 대체됨
# 입력문
num = input ("정수를 입력하세요.")
# num 변수에 사용자가 입력한 값이 문자열 형태로 저장됨
# 계산을 목적으로 받아들일 경우, 숫자로 사용하려면 '형변환'이 요구됨
print("입력한 점수는 : ", num, "점 입니다")
# 변수는 값을 저장하는 공간이자, 정수(int), 실수(float), 문자열(str)로 구분된다.
# 형 변환, 문장과 변수 연결
num = input ("정수를 입력하세요")
# 대기상태
print('입력한 정수는: ', int(num) + 1, "입니다")
num = int(input ('정수를 입력하세요'))
# num 변수를 정수로 형변환
print('입력한 정수는 ', num + 1, "입니다")
# real number 입력 시 형변환 에러
# num = int( input ( 'Enter an interger'))
# # num 변수를 정수로 형변환
# print('입력한 정수는 :", num + 1, "입니다")
num = float( input ( "정수를 입력하세요" ) )
print("입력한 정수는", num + 1, "입니다")
'''
– 원점을 중심으로 가로, 세로 200 크기의 사각형을 그린다.
– 사각형 내부를 클릭하면 클릭한 지점에 파랑색 원, 외부를 클릭하면 빨강색 원을 그린다.
– 원의 크기는 반지름 5 '''
import turtle as t
t.shape ("turtle")
# 사각형을 그릴 지점으로 이동하는 명령
t.penup()
t.goto(-100, 100)
t.pendown()
# 가로, 세로 200 크기의 사각형을 그리는 명령
# 0도: 오른쪽
# 180도: 왼쪽
# 270도: 아래쪽
# 90도: 윗쪽
t.setheading(0)
# Turning toward 'right side'
t.forward(200)
t.setheading(270)
# Turning toward 'bottom side'
t.forward(200)
t.setheading(180)
# Turning toward 'left side'
t.forward(200)
t.setheading(90)
# Turning toward 'upper side'
t.forward(200)
# Turtle을 다시 원점 (중앙)으로 옮기는 명령 (unnecessary)
t.penup()
t.goto(0,0)
t.pendown()
# 사각형 내부를 클릭하면 파랑색 원, 외부를 클릭하면 빨강색 원
def decision (x, y):
# 여기서의 (x, y)는 클릭한 마우스의 좌표
if ( x > -100 ) and ( x < 100 ):
# 두개의 조건 (x > -100), (x < 100)이 모두 충족되야(and) 참
if ( y > -100 ) and ( y < 100 ):
# x조건이 참 했을 시에, 이후 두개의 조건 (y > -100), (y < 100)이 모두 충족되야(and) 참
t.penup()
t.goto(x, y)
t.pendown()
# 그릴 좌표로 이동
t.pencolor('blue')
# 색 지정 (파란색)
t.speed(10)
# circle을 그리는 속도. 1에서 10까지
t.circle(5)
# radius가 5인 circle
else:
t.penup()
t.goto(x, y)
t.pendown()
t.pencolor('red')
t.speed(10)
t.circle(5)
t.onscreenclick (decision)
t.done()
'''
데이터타입
변수의 공간 나입를 막기 위해 타입을 결정
정수, 실수, 문자열, 이진 데이터 등
배열성 타입: 리스트, 튜플, 딕셔너리
# 파이썬은 보통 리스트를 많이 씀
type (변수 혹은 값) 함수를 이용하여 데이터 타입을 확인할 수 있음
'''
str1 = "0123456789"
# 큰, 작은 따옴표 관계없음
str2 = 'abcdefghijk'
print("%s" %str1[0])
# 배열은 0부터 시작함. 0번째 배열 = 가장 앞에 있는 숫자
print("%s" %str1[2:7])
# 2번째부터 6번째 까지의 배열
print("%s" %str1[5:])
# 아무것도 없으면 최대치까지, 마지막에 아무것도 없으니까 끝까지.
print("%d %d" % (len(str1), len(str2)))
# 형식이 2개 이상일 경우 괄호 필수
str3 = "0123456789"
str4 = "1bcde'fgh"
# 따옴표가 있어도 출력된다.
str5 = "012345\n6789"
# \n 구분자는 엔터 기능을 한다.
print("%s" % str3)
print("%s" % str4)
print("%s" % str5)
str1 = "파이썬 문자열 다루기"
str2 = "파이썬의 문자열 관련 함수"
str3 = " 파이썬 문자열 "
str4 = "파이썬:문자열:다루기"
print(str1.find("문자"))
# "문자" 단어가 시작되는 위치의 인덱스를 반환
'''
파: 0
이: 1
썬: 2
(공백): 3
문: 4
'''
print(str2.find("클래스"))
# 하지만 존재하지 않는 문자열을 검색할 경우 -1을 반환한다
print(str1.find("문자열", 8))
# 뒤에 숫자를 적으면, 그 숫자부터 시작하는 곳에서 검색을 함
print(str3)
# 공백을 포함하며 출력한다
print(str3.strip())
# 앞 뒤 공백을 제거하는 문장
print(str4.split(":"))
# :을 기준으로 split하는 명령어이다.
print (str1.replace("파이썬", "장고"))
print (str1.split())
# for 반복문
# for 변수명 in 리스트명:
# 수행할 명령
for a in range(5):
print("프로그래밍 활용")
# 1부터 10까지의 정수의 합
tot = 0
for a in range(11):
# 0부터 10까지
tot += a
# tot = tot + a
print(tot)
# 1부터 10까지 홀수의 합
tot = 0
for a in range(1, 11, 2):
# 2의 간격으로
tot += a
print(a, tot)
# 1부터 10까지 짝수의 합
tot = 0
for a in range(2, 11, 2):
# 2의 간격으로
tot += a
print(a, tot)
# 1부터 20까지 3의 배수의 합
tot = 0
for a in range(3, 21, 3):
# 3의 간격으로, 20까지니까 21
tot += a
print(a, tot)
# while문
# while문 뒤의 조건식이 참일 경우에 반복 시행
# for 문과 달리 while 문의 내부에 반복을 중단하기 위한 수식이 필요함
tot = 0
a = 1
while a <= 10:
tot += a
a += 1
print(a, tot)
# break문 / 반복문의 내부에서 강제로 반복 종료
tot = 0
a = 1
while True:
tot += a
a += 1
if tot > 100:
break
print(a, tot)
# continue문 / 완전히 아래의 내용을 skip함에 있어서 의의를 둠
tot = 0
for a in range(11):
if a % 2 == 0:
# 2로 나누어서 나머지가 0이여야 함 = 홀수의 합
continue
tot += a
print(a, tot)
# while 반복문 (실습)
# 1부터 10까지 홀수의 합
tot = 0
a = 1
while a <= 10:
if a % 2 == 1:
tot += a
a += 1
print(a, tot)
# while문은 조건을 직접 해보기 전엔 모르기 때문에 이런 것은 조심해야함.
# 어떨 때 멈추게 되는지 값을 판단해야함.
# 1부터 10까지의 짝수의 합
tot = 0
a = 1
while a <= 10:
if a % 2 == 0:
tot += a
a += 1
print(a, tot)
# 1부터 20까지의 3의 배수의 합
tot = 0
a = 1
while a <= 20:
if a % 3 == 0:
tot += a
a += 1
print(a, tot)
# 터틀 그래픽 (Turtle Graphic)
# 터틀 그래픽은 화면에 그림을 그릴 수있는 기능이며 파이썬에서 기본 제공되는 모듈이다
import turtle as t
# 계속 turtle을 길게 쓰기 힘들기 때문에 축약형 별명인 t로써 지칭함을 선언한다.
t.shape ("turtle")
# 커서의 모양을 거북이 (turtle)로 설정한다.
t.forward(50)
# 거북이의 머리를 기준으로 50픽셀만큼 전진
t.right(90)
# 시계방향을 기준으로 90도만큼 회전
t.forward(50)
# 다시 거북이의 머리를 기준으로 50픽셀만큼 전진
t.done()
# 터틀 그래픽을 종료하는 문장
t.penup()
# 진로과정 중 선 그리기를 중지하고 이동만 한다.
t.goto(100,200)
# 해당 좌표로 순간이동
t.pendown()
# 다시 그리기를 재개한다
t.goto(0,0)
# 원점으로 순간이동
t.done()
# 별그리기
for i in range(5):
# i에 대하여 5번 실행한다.
t.forward(100)
# 100픽셀만큼 이동
t.right(144)
# 시계 방향으로 144도만큼 회전
t.done()
import math
# sin 함수를 사용하기 위해서는 math 라이브러리를 임포트해온다
t. shape ("turtle")
for x in range(-180, 180):
t.goto (x, 300*math.sin(x*3.14/180))
#(x, y)좌표에서 y값에 sin함수가 적용된 형태이다.
t.done()
t.penup()
t.goto(-360,0)
t.pendown()
for x in range(-360, 360):
t.goto (x, 200*math.sin(x*3.14/180))
# 일반각을 radian 각으로
t.done()
# 별그리기
for x in range(5):
t.forward(100)
t.right(144)
for x in range(-180, 180):
t.goto (x, 300*math.sin(x*3.14/180))
# y축의 값: 300*math.sin(x*3.14/180)
# 300을 곱하는 이유: 증폭시키기 위하여
t.penup()
t.goto(-360,0)
t.pendown()
for x in range(-360, 360):
t.goto (x, 200*math.sin(x*3.14/180))
# 일반각을 radian 각으로
t.onkeypress (moveUp, "w")
t.done()
# 터틀 그래픽을 종료하는 문장
import turtle as t
t.shape("turtle")
def moveUp():
# moveUp 함수를 정의함 (define)
# 아랫줄부터 moveUp 함수가 무엇인지 설명
t.setheading(90)
# 윗쪽 방향으로 설정
# set heading (어디 방향으로 머리를 둘지)
t.forward(30)
# 30만큼 커서 전진
# 4열부터 11열까지가 moveUp함수
t.onkeypress(moveUp, "Up")
# (실행할 함수, 입력할 방향키) 순서
# 윗쪽 방향 커서키
t.listen()
# 키보드 포커스, 입력되기를 기다리고 있는 상태임
'''여기까지는 키보드 이동'''
t.done()
def move(x, y):
# x,y좌표에 따라 움직이는 move함수를 만듬
t.penup()
# 움직이는 동안 그려지지 않기 위해 pen을 up시킨다.
t.goto(x, y)
# 움직임을 실행하는 명령
t.pendown()
# 다시 PENDOWN
t.onscreenclick(move, 1)
# move: 어디로 움직일 지 모르니까 move함수 사용
# 1: 왼쪽버튼
t.done()
import datetime
# 날짜를 나타내는 함수를 사용하기 위해 datetime 라이브러리를 가져옴
''' 일반적인 형식
"%서식1 %서식2 %서식3" %(자료1, 자료2, 자료3)
"kor = %d, eng = %d" % (kor,eng) '''
t.shape("turtle")
def move(x, y):
t.penup()
t.goto(x, y)
t.pendown()
d = datetime.datetime.now()
# datetime 함수 사용
datestr = "%4d-%02d-%02d %02d:%02d:%02d" % (d.year, d.month, d.day, d.hour, d.minute, d.second)
# %4d = 4자리수의 숫자 (decimal)
# 02d = 2자리수의 숫자이지만, 10월, 11월, 12월이기 때문에 02를 사용
# 왼쪽의 6개의 d에 상응하는 d.year ~ d.second까지 왼쪽에 기입
# 2021-03-24 10:10:10 보편적인 날짜의 형식
t.write(datestr, font = ("굴림", 20, "normal"))
# write은 (출력할 문장, 문장의 형식 (폰트, 크기, 스타일 등의 CSS 요소들))의 형식을
t.onscreenclick(move, 1)
t.done()
# 2021-03-24 10:10:10 보편적인 날짜의 형식
# sin 곡선 그리기
import math
import turtle as t
t.shape ("turtle")
t.penup()
t.goto(-360, 0)
# (0, 0) 좌표에서 시작하는게 아닌, (-360, 0)에서 시작하기 위한 이동
t.pendown()
for x in range(-360, 360, 1):
# -360에서 +360까지 1씩 증가
y = math.sin(math.radians(x))*100
# y 값이 너무 복잡하기 때문에 y라는 변수에 묶어둠
t.goto(x,y)
t.done()
import turtle as t
t.shape("turtle")
def moveUp():
# 위로 30만큼 이동하는 함수
t.setheading(90)
# 윗쪽을 바라보면 90도
t.forward(30)
def moveDown():
# 아래로 30만큼 이동하는 함수
t.setheading(270)
# 아래쪽을 바라보면 270도
t.forward(30)
def moveLeft():
# 왼쪽으로 30만큼 이동하는 함수
t.setheading(180)
# 왼쪽을 바라보면 180도
t.forward(30)
def moveRight():
# 오른쪽으로 30만큼 이동하는 함수
t.setheading(0)
# 오른쪽을 바라보면 0도
t.forward(30)
t.onkeypress(moveUp, "Up")
# (실행할 함수, 할당된 키보드 방향키)
# Up이면 윗키
t.onkeypress(moveDown, "Down")
t.onkeypress(moveLeft, "Left")
t.onkeypress(moveRight, "Right")
t.listen()
t.done()
# 문장을 x번 출력하는 함수
def func_print(x):
# func_print가 함수 이름
# x는 정수값이 들어가야함
# def를 앞에 붙임으로서 함수를
for i in range(x):
print("Programming using")
# 호출
func_print(5)
# 함수명(func_print)을 쓰고, 인수 혹은 매개변수(5)를 쓰면 된다
# x1부터 x2까지의 정수의 합
def func_sum(x1, x2):
# func_sum 이라는 함수를 만드는 과정
tot = 0
# 초기화
for i in range(x1, x2+1):
# i를 x1에서 x2+1까지 만큼 (횟수) 반복한다
tot += i
# tot(2번째 tot) = i + tot(1번째 tot)
print(tot)
def func_tot(x):
tot = 0
for i in range(x + 1):
# range (x)의 경우, 초깃값이 0부터 시작하여 x보다 1 작은 수 까지 1씩 증가함
# range (start, stop, step), 인수가 3개 이상이면 다음과 같은 요소들이 들어감
tot += i
return tot
func_sum(1, 10)
# 1에서부터 10까지의 합을 구하는 함수
# 다만 컴퓨터 언어에서는 범위가 (1, 10)일 시에, 10 직전까지의 수까지 구하기 때문에
# for i in range(x, y+1)로 마지막 지점에서 +1을 해주어야 한다.
func_sum(5, 10)
# 5에서부터 10까지의 합을 구하는 함수
func_tot(10)
# 위처럼 함수를 작성하면 결과값은 생성되지만 Print 되진 않는다.
# func_sum은 함수 내부에 print(tot)가 있지만 func_tot는 print가 내장되지 않았기 때문
print(func_tot(10))
# 그러므로 print를 넣어주어야 한다.
print("합계는: ", func_tot (10))
# 수학 관련 모듈
import math
print(math.sqrt(5))
# 제곱근 5를 구하는 수학 공식
print(math.pi)
# 파이를 구하는 수학공식
print(math.sin(math.radians(30)))
# 난수 관련 모듈
import random
for i in range(5):
print(random.randint (1, 10))
# 1에서 10까지의 난수 중 5개를 출력하는 함수
for i in range(5):
print(random.randint (1, 100))
# 1에서 100까지의 난수 중 5개를 출력하는 함수
# 단순한 if문
a = 10
if a > 0:
print("Positive Number")
# 들여쓰기가 Block의 범위를 결정한다.
print("Terminate")
# if ~ else 문
a = 10
if a > 0:
print("Positive Number")
else:
print("Negative Number")
print("Terminate")
# if ~ elif ~ else 문
a = 10
if a > 0:
print("Positive Number")
elif a < 0:
print("Negative Number")
else:
print("Zero")
print("Terminate")
# pass
a = 10
if a < 0:
pass # 구성은 해야하지만, 무엇으로 채워넣을지 모르겠을때 쓰는 처리문
else:
print("Positive Number")
print("Terminate")
a = 10
if a == 0:
print("Positive Number")
elif a < 0:
print("Negative Number")
else:
print("Positive Number")
print("Terminate")
if a == 0:
print("Zero")
elif a < 0:
print("Negative Number")
else:
print("Positive number")
print("Terminate")
a = 85
if a >= 90 and a <= 100:
# and는 조건이 모두 충족해야 참
print("a")
else:
print("b")
print("Terminate")
a = 95
if ( a >= 90 ) and ( a <= 100 ) :
# 괄호로 조건을 둘러싸는 방식도 허용
print("A")
else:
print("B")
print("Terminate")
# 조건 분기문 예제
# 입력 값이 0 ~ 100 범위로 가정한다
# 성적을 입력받아 90, 80, 70, 60 의 구간으로 잘라 등급을 평가하는 문
score = int(input("Enter Your Score: "))
if score >= 90:
print("Your score is A")
elif score >= 80:
print("Your score is B")
elif score >= 70:
print("Your score is C")
elif score >= 60:
print("Your score is D")
else:
print("Your score is F")