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 |