DongSup
dev's gait
DongSup
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • flask (13)
    • iOS (11)
    • python (22)
    • CS (21)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 언어공부
  • 한걸음
  • 첫글
  • Swift
  • 파이썬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DongSup

dev's gait

파이썬 코딩 도장 Unit 3 ~ Unit 12 정리
python

파이썬 코딩 도장 Unit 3 ~ Unit 12 정리

2022. 1. 7. 16:34
Unit 3

 

3.7 연습 문제 ▶ Hello, world!'와 'Python Programming'이 각 줄에 출력되게 만드세요.

print("Hello, world!")
print("Python Programming")
많은 프로그래밍 언어들은 구문이 끝날 때 ; (세미콜론)을 붙이지만 파이썬은 세미콜론을 붙이지 않습니다.

 


 

3.8 실습 문제 ▶ 'Hello, world!' 두 개를 각 줄에 출력하는 프로그램을 만드세요.

print("Hello, world!");
print("Hello, world!")
단, 세미콜론을 붙여도 문법 에러는 발생하지 않습니다.
보통 한 줄에 여러 구문을 사용할 때 세미콜론으로 구분해줍니다.

 


 

Unit 5

 

5.5 연습 문제 ▶ 국립환경과학원에서는 아파트에서 소음이 가장 심한 층수를 구하는 계산식을 발표했습니다.

소음이 가장 심한 층은 0.2467 * 도로와의 거리(m) + 4.159입니다.

다음 소스 코드를 완성하여 소음이 가장 심한 층수가 출력되게 만드세요.

단, 층수를 출력할 때는 소수점 이하 자리는 버립니다(정수로 출력).

  • 도로와의 거리: 12m
print(int(0.2467 * 12 + 4.159))
계산 결과가 실수로 나왔을 때 강제로 정수로 만들기 위해서는
int에 괄호를 붙이고 숫자 또는 계산식을 넣으면 됩니다. 특히 int에 문자열을 넣어도 정수로 만들 수 있습니다. 단, 정수로 된 문자열이어야 합니다.

 


 

5.6 실습 문제 ▶ L이라는 게임에서 "왜곡"이라는 스킬이 AP * 0.6 + 225의 피해를 입힙니다.

참고로 이 게임에서 AP(Ability Power, 주문력)는 마법 능력치를 뜻합니다.

다음 소스 코드를 완성하여 스킬의 피해량이 출력되게 만드세요.

  • AP: 102
# print(102 _______)

print(102 * 0.6 + 225) # 정답
# 실행결과 : 286.2
실수와 정수를 함께 계산하면 표현 범위가 넓은 실수로 계산됩니다 (실수가 정수보다 표현 범위가 넓습니다).

 


 

Unit 6

 

6.6 연습 문제 ▶ 다음 소스 코드를 완성하여 정수 세 개를 입력받고 합계가 출력되게 만드세요.

# ________________
# print(a + b + c)
# 입력 : -10 20 30
# 결과 : 40

a, b, c = map(int, input().split()) # 정답
print(a + b + c)
input 한 번에 값 하나만 입력받지 않고 input 한 번에 값을 여러 개 입력받으려면
input에서 split을 사용한 변수 여러 개에 저장해주면 됩니다(각 변수는 콤마로 구분해줍니다).

◽ 변수1, 변수2 = input().split()
◽ 변수1, 변수2 = input().split('기준문자열')
◽ 변수1, 변수2 = input('문자열').split()
◽ 변수1, 변수2 = input('문자열').split('기준문자열')

 


 

6.7 실습 문제 ▶ 다음 소스 코드를 완성하여 50, 100, None이 각 줄에 출력되게 만드세요.

# _________
# _________
# _________

# print(a)
# print(b)
# print(c)

# 정답
a = 50 
b = 100
c = None

print(a)
print(b)
print(c)
# 실행결과
# 50
# 100
# None
◼ x = 10 이라고 입력하면 10이 들어있는 변수 x 가 만들어집니다. 즉, 변수이름 = 값
◼ 값이 들어있지 않은 빈 변수(값이 들어있지 않는 변수)를 만들때는 None 을 할당해주면 됩니다.

 


 

6.8 실습 문제 ▶ 표준 입력으로 국어, 영어, 수학, 과학 점수가 입력됩니다.

평균 점수를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다).

단, 평균 점수를 출력할 때는 소수점 이하 자리는 버립니다(정수로 출력).

# 입력 : 83 92 87 90
# 결과 : 88

a, b, c, d = map(int, input().split())
print((a+b+c+d)//4)
◼ split의 결과를 매번 int로 변환해주려면 번거롭기에 이때는 map을 함께 사용하면 됩니다.
map에 int와 input().split()을 넣으면 split의 결과를 모두 int로 변환해줍니다
(실수로 변환할 때는 int 대신 float를 넣습니다.).

◽ 변수1, 변수2 = map(int, input().split())
◽ 변수1, 변수2 = map(int, input().split('기준문자열'))
◽ 변수1, 변수2 = map(int, input('문자열').split())
◽ 변수1, 변수2 = map(int, input('문자열').split('기준문자열'))

◼ // 은 버림 나눗셈(floor division)이라고 부르며 나눗셈의 결과에서 소수점 이하는 버립니다.

 


 

Unit 7

 

7.4 연습 문제 ▶ 다음 소스 코드를 완성하여 날짜와 시간이 출력되게 만드세요.

# 결과 : 2000/10/27 11:43:59

# year = 2000
# month = 10
# day = 27
# hour = 11
# minute = 43
# second = 59
 
# print(year, month, day, ________)
# print(hour, minute, second, ________)

year = 2000
month = 10
day = 27
hour = 11
minute = 43
second = 59

# 정답
print(year, month, day, sep='/', end=' ')
print(hour, minute, second, sep=':')
◼ 값 사이에 공백이 아닌 다른 문자를 넣고 싶을 때는 print의 sep에 문자 또는 문자열을 지정해주면 됩니다
(
sep는 구분자라는 뜻의 separator).

◽ print(값1, 값2, sep='문자 또는 문자열')
◽ print(변수1, 변수2, sep='문자 또는 문자열')

◼ print를 여러 번 사용해서 print(1, 2, 3)처럼 한 줄에 여러 개의 값을 출력하기 위해선 print의 end에 빈 문자열을 지정해주면 됩니다.

◽ print(값, end='문자 또는 문자열')
◽ print(변수, end='문자 또는 문자열')

 


 

7.5 실습 문제 ▶ 표준 입력으로 년, 월, 일, 시, 분, 초가 입력됩니다.

다음 소스 코드를 완성하여 입력된 날짜와 시간을 년-월-일T시:분:초 형식으로 출력되게 만드세요.

# year, month, day, hour, minute, second = input().split()
# _______________________________________
# print(hour, minute, second, sep=':')
# 입력 : 1999 12 31 10 37 21
# 결과 : 1999-12-31T10:37:21

year, month, day, hour, minute, second = input().split()
# 정답
print(year, month, day, sep='-', end='T')
print(hour, minute, second, sep=':')
end를 따로 지정하지 않는다면 개행문자가 포함되어 두줄로 출력되지만
첫번째 print문에서 end값을 지정해주었기 때문에 줄바꿈이 되지 않고 한줄로 출력 됩니다.

 


 

Unit 8

 

8.4 연습 문제 ▶ 국어, 영어, 수학, 과학 점수가 있을 때 한 과목이라도 50점 미만이면 불합격이라고 정했습니다.

다음 소스 코드를 완성하여 합격이면 True, 불합격이면 False가 출력되게 만드세요.

# korean = 92
# english = 47
# mathematics = 86
# science = 81
 
# print(______________)

korean = 92
english = 47
mathematics = 86
science = 81
 
print(korean >= 50 and english >= 50 and mathematics >= 50 and science >= 50) # 정답
◼ >은 초과, <은 미만, >=은 이상, <=은 이하라고도 합니다.
그리고 
>, <은 비교할 값과 같으면 무조건 거짓입니다. 하지만 >=, <=은 비교할 값과 같으면 참입니다.
◼ and는 두 값이 모두 True여야 True입니다. 하나라도 False이면 False가 나옵니다.

 


 

8.5 실습 문제 ▶ 표준 입력으로 국어, 영어, 수학, 과학 점수가 입력됩니다.

국어는 90점 이상, 영어는 80점 초과, 수학은 85점 초과, 과학은 80점 이상일 때 합격이라고 정했습니다

(한 과목이라도 조건에 만족하지 않으면 불합격).

다음 소스 코드를 완성하여 합격이면 True, 불합격이면 False가 출력되게 만드세요

(input에서 안내 문자열은 출력하지 않아야 합니다).

# _________
# 입력 : 90 81 86 80
# 출력 : true

# 정답
korean, english, mathematics, science = map(int, input().split())
print(korean >= 90 and english > 80 and mathematics > 85 and science >= 80)
점수가 한 줄에 입력되므로 input에서 split을 사용한 뒤 변수 네 개에 저장해주면 됩니다.
이때 input().split()의 결과는 문자열 상태이므로 map에 int를 사용하여 정수로 변환해줍니다.

 


 

Unit 9

 

9.3 연습 문제 ▶ 다음 소스 코드를 완성하여 실행 결과대로 문자열이 출력되게 만드세요.

# s = _______________
# print(s)
# 결과 : Python is a programming language that lets you work quickly
# and integrate systems more effectively.

# 정답
s = """Python is a programming language that lets you work quickly
and integrate systems more effectively."""
print(s)
특히 파이썬에서는 작은따옴표로 묶는 방법 이외에도 문자열을 만드는 방법으로
" "(큰따옴표)로 묶는 방법과 '''(작은따옴표 3개)로 묶거나 """(큰따옴표 3개)로 묶는 방법이 있습니다.

 


 

9.4 실습 문제 ▶ 다음 소스 코드를 완성하여 실행 결과대로 문자열이 출력되게 만드세요.

# _________
# print(s)
# 결과 : 'Python' is a "programming language"
# that lets you work quickly
# and
# integrate systems more effectively.

# 정답
s=''''Python' is a "programming language"
that lets you work quickly
and
integrate systems more effectively.'''
print(s)
마지막으로 이 문자열 전체를 '''(작은따옴표 3개) 또는 """(큰 따옴표 3개)로 묶은 뒤 변수 s에 할당

 


 

Unit 10

 

10.4 연습 문제 ▶ 다음 소스 코드를 완성하여 리스트 [5, 3, 1, -1, -3, -5, -7, -9]가 출력되게 만드세요. 리스트를 만들 때는 range를 사용해야 합니다.

# ___________________
# print(a)

a = list(range(5, -10, -2))
print(a)
range(5, -10)이라고 나와서 -10까지 생성될 것 같지만 -10은 포함되지 않습니다.
다음과 같이 
list에 range(5, -10)를 넣으면 5부터 -10까지 들어있는 리스트가 생성됩니다.
range에 증가폭을 지정하면 해당 값만큼 증가하면서 숫자를 생성합니다.

◽ 리스트 = list(range(시작, 끝, 증가폭))

 


 

10.5 실습 문제 ▶ 표준 입력으로 정수가 입력됩니다. range의 시작하는 숫자는 -10, 끝나는 숫자는 10이며 입력된 정수만큼 증가하는 숫자가 들어가도록 튜플을 만들고, 해당 튜플을 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다).

# ____________
# 입력 : 2
# 결과 : (-10, -8, -6, -4, -2, 0, 2, 4, 6, 8)

# 정답
step = int(input())
a = tuple(range(-10, 10, step))
print(a)

 

증가폭을 입력받고 그 값을 변수에 저장한 후, range(시작,끝,증가폭)함수를 사용하면 됩니다. 
여기서 입력받은 값은 정수로 변환해주어야 합니다.
range(-10, 10, step)는 -10부터 step씩 증가하며 10은 포함되지 않습니다.
이 튜플을 변수 a에 저장한 뒤 print로 출력합니다.

 


 

Unit 11

 

11.6 연습 문제 ▶ 리스트 year에 연도, population에 서울시 인구수가 저장되어 있습니다. 다음 소스 코드를 완성하여 최근 3년간 연도와 인구수가 리스트로 출력되게 만드세요.

# year = [2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018]
# population = [10249679, 10195318, 10143645, 10103233, 10022181, 9930616, 9857426, 9838892]
 
# print(_________)
# print(_________)
# 결과 : [2016, 2017, 2018]
# [9930616, 9857426, 9838892]

year = [2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018]
population = [10249679, 10195318, 10143645, 10103233, 10022181, 9930616, 9857426, 9838892]

# 정답
print(year[-3:])
print(population[-3:])
인덱스에서 -3은 뒤에서 세 번째 요소인 2016부터 끝 인덱스를 생략했기에 마지막 요소까지 가져옵니다.

 


 

11.7 연습 문제 ▶ 다음 소스 코드를 완성하여 튜플 n에서 인덱스가 홀수인 요소들이 출력되게 만드세요.

# n = -32, 75, 97, -10, 9, 32, 4, -15, 0, 76, 14, 2

# print(________)
# 결과 : (75, -10, 32, -15, 76, 2)

n = -32, 75, 97, -10, 9, 32, 4, -15, 0, 76, 14, 2

# 정답 
print(n[1::2])
print(n[1:12:2])
print(n[1:len(n):2])
홀수는 1부터 시작하고 2씩 증가합니다. 따라서 시작 인덱스는 1, 인덱스 증가폭은 2가 되어야 합니다.
그리고 튜플 전체에서 인덱스가 홀수인 요소들을 구해야 하므로 끝 인덱스는 생략합니다.
길이가 12인 튜플 n의 마지막 요소(인덱스 11)까지 구하도록 len(n)을 지정하거나 12를 넣어도 상관없습니다.

 


 

11.8 실습 문제 ▶ 표준 입력으로 숫자 또는 문자열 여러 개가 입력되어 리스트 x에 저장됩니다

(입력되는 숫자 또는 문자열의 개수는 정해져 있지 않음).

다음 소스 코드를 완성하여 리스트 x의 마지막 요소 5개를 삭제한 뒤 튜플로 출력되게 만드세요.

# x = input().split()
# __________________
# 입력 : 1 2 3 4 5 6 7 8 9 10
# 결과 : ('1', '2', '3', '4', '5')

x = input().split()

# 정답
del x[-5:]
a = tuple(list(x))
print(a)
인덱스에서 -5은 뒤에서 다섯 번째 요소인 5부터 마지막 요소까지 슬라이스를 삭제 후
튜플을 변수 a에 저장한 뒤 print로 출력합니다.

 


 

11.9 실습 문제 ▶ 표준 입력으로 문자열 두 개가 각 줄에 입력됩니다(문자열의 길이는 정해져 있지 않음).

첫 번째 문자열에서 인덱스가 홀수인 문자와 두 번째 문자열에서 인덱스가 짝수인 문자를 연결하여

출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다).

연결 순서는 첫 번째 문자열, 두 번째 문자열 순입니다. 그리고 0은 짝수로 처리합니다.

# _____________
# 입력
# python 
# python
# 결과 : yhnpto

# 정답
a = input()
b = input()
print(a[1::2]+b[0::2])
변수 a는 홀수만, b는 짝수만이므로 시작숫자는 각각 다르게 지칭해주고 증가폭은 2로 지정을 해주면
a는 인덱스1,3,5의 글자를 b는 인덱스 0,2,4순으로 가져옵니다.
그리고 이를 print문에서 감싸줍니다.

 


 

Unit 12

 

12.4 연습 문제 ▶ 다음 소스 코드를 완성하여 게임 캐릭터의 체력(health)과 이동 속도(movement speed)가

출력되게 만드세요.

# camille = {
#     'health': 575.6,
#     'health_regen': 1.7,
#     'mana': 338.8,
#     'mana_regen': 1.63,
#     'melee': 125,
#     'attack_damage': 60,
#     'attack_speed': 0.625,
#     'armor': 26,
#     'magic_resistance': 32.1,
#     'movement_speed': 340
# }

# print(___________________)
# print(___________________)
# 결과
# 575.6
# 340

camille = {
    'health': 575.6,
    'health_regen': 1.7,
    'mana': 338.8,
    'mana_regen': 1.63,
    'melee': 125,
    'attack_damage': 60,
    'attack_speed': 0.625,
    'armor': 26,
    'magic_resistance': 32.1,
    'movement_speed': 340
}
# 정답
print(camille['health'])
print(camille['movement_speed'])
딕셔너리 camille에 게임 캐릭터의 능력치가 들어있습니다.
이 딕셔너리에서 값을 출력하려면 딕셔너리에 키를 지정해야 합니다.
따라서 체력은 
camille['health'], 이동 속도는 camille['movement_speed']와 같이 키를 지정하면 됩니다.

 


 

12.5 실습 문제 ▶ 표준 입력으로 문자열 여러 개와 숫자(실수) 여러 개가 두 줄로 입력됩니다.

입력된 첫 번째 줄은 키, 두 번째 줄은 값으로 하여 딕셔너리를 생성한 뒤

딕셔너리를 출력하는 프로그램을 만드세요. input().split()의 결과를 변수 한 개에 저장하면 리스트로 저장됩니다.

# _____________
# 입력
# health health_regen mana mana_regen
# 575.6 1.7 338.8 1.63
# 결과
# {'health': 575.6, 'health_regen': 1.7, 'mana': 338.8, 'mana_regen': 1.63}

# 정답
a=input().split()
b=map(float, input().split())
c=dict(zip(a,b))
print(c)
딕셔너리는 { }(중괄호) 안에 키: 값 형식으로 저장하며 각 키와 값은 ,(콤마)로 구분
dict는 다음과 같이 키와 값을 연결하거나, 리스트, 튜플, 딕셔너리로 딕셔너리를 만들 때 사용합니다.
dict에서 zip 함수를 이용하는 방법으로 키가 들어있는 리스트와 값이 들어있는 리스트를
차례로 zip에 넣은 뒤 다시 dict 에 넣어주면 됩니다

◽ 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))

 


참조 : https://dojang.io/course/view.php?id=7

'python' 카테고리의 다른 글

Unit 17 문제 풀이  (0) 2022.01.15
Unit 16 문제 풀이  (0) 2022.01.15
Unit 15 문제 풀이  (0) 2022.01.15
Unit 14 문제 풀이  (0) 2022.01.15
Unit 13 문제 풀이  (0) 2022.01.15
    'python' 카테고리의 다른 글
    • Unit 16 문제 풀이
    • Unit 15 문제 풀이
    • Unit 14 문제 풀이
    • Unit 13 문제 풀이
    DongSup
    DongSup

    티스토리툴바