본 글은 개인적으로 Python 개념정리를 돕기 위하여, wecode의 Python 기초과정의 연습문제와 해답을 정리한 글입니다.
좌우와 상하가 모두 1 부터 8까지의 칸으로 이루어져 구성 되어 있는 체스보드가 있습니다.
주어진 input 값 2개를 통해서 해당 칸의 색깔이 검은색이면 "YES"를, 아니면 "NO" 를 출력하세요.
Input 값은 2개가 주어집니다. 첫번째 input은 X 축이며 두번째 input은 Y 축입니다.
예를 들어, input 값이 2와 6 이면 검은색 box 입니다.
x = int(input())
y = int(input())
if x % 2 == 0 and y % 2 == 0:
print("YES")
elif x % 2 == 1 and y % 2 == 1:
print("YES")
else:
print("NO")
if (x + y) % 2 == 0:
print('YES')
else:
print('NO')
월(month)와 일(day), 이 2가지를 input 값으로 받았을때, 2019년의 해당 월과 일의 다음 날의 월과 일을 출력해주세요.
예를 들어, month 는 3이고 일은 31이면 2019년 3월 31일의 다음날은 4월 1일 임으로 다음과 같이 출력이 되면 됩니다 (월 과 일을 각각 다른 줄에 출력 해주세요).
month = int(input())
day = int(input())
if month == 2 and day == 28:
month +=1
day = 1
elif (month == 4 or 6 or 9 or 11) and day == 30:
month += 1
day = 1
elif (month == 1 or 3 or 5 or 7 or 8 or 10 or 12) and day == 31:
month += 1
day = 1
else:
day += 1
print(month)
print(day)
month = int(input())
day = int(input())
if ((day == 30) and (month == 4 or month == 6 or month == 9 or month == 11)
or (day == 28) and (month == 2)
or (day == 31)):
month += 1
day = 1
else:
day += 1
if month == 13:
month = 1
print(month)
print(day)
다음의 방정식을 해결하는 프로그램을 구현 하세요. x값을 구해야 합니다.
ax = b
결과 출력물은 다음과 같아야 합니다.
Hint:
a 나 b 는 0이 될 수 있습니다.
Examples:
만일 a = 1, b = -2 라면 결과값으로 -2가 출력이 되어야 합니다.
만일 a = 2, b = -1 라면 결과값으로 "No Solution"이 출력이 되어야 합니다.
a = int(input())
b = int(input())
if a != 0:
if b % a == 0 :
print(b // a)
elif b % a != 0 :
print("No Solution")
elif b == 0:
print("Many Solutions")
elif a == 0 and b > 0:
print("No Solution")
elif a == 0 and b == 0:
print("Many Solutions")
a = int(input())
b = int(input())
if a == 0:
if b == 0:
print('Many Solutions')
else:
print('No Solution')
elif b % a == 0:
print(b // a)
else:
print('No Solution')
Input으로 주어진 리스트의 첫번째와 마지막 element의 값을 더한 값을 리턴 해주세요.
만일 리스트가 비어있다면 0이 리턴되어야 합니다.
리스트의 총 길이가 1이라면 그 하나의 요소 값만 리턴해주면 됩니다.
예를 들어, 다음의 리스트가 주어졌다면:
inputs = [1, 2, 3, 4, 5]
다음과 같은 결과물이 출력 되어야 합니다.
6
만일 다음의 리스트가 주어졌다면:
inputs = [1]
다음과 같은 결과물이 출력 되어야 합니다.
1
def add_first_and_last_elements(my_list):
if len(my_list) == 1:
return my_list[0]
elif len(my_list) == 0:
return 0
else:
return my_list[0] + my_list[len(my_list) - 1]
def add_first_and_last_elements(my_list):
length = len(my_list)
if length > 1:
return my_list[0] + my_list[length - 1]
elif length == 1:
return my_list[0]
else:
return 0
예를 들어, 다음과 같은 2개의 리스트가 주어졌다면
list1 = [1, 2, 3, 4, 5]
list2 = [6, 7]
출력되야 하는 결과물은 다음과 같습니다,
[7, 2, 3, 4, 5, 6, 1]
a , b = b , a
형식으로 자리를 switchdef merge_and_swap(list1, list2):
if list1 + list2 != []:
list1 = list1 + list2
list1[0] , list1[len(list1) - 1] = list1[len(list1) - 1] , list1[0]
return list1
else:
return []
list1[0]
과 list1[len(list1)-1
를 변수로 저장한 후, 각각의 값에 대입def merge_and_swap(list1, list2):
list1 = list1 + list2
length = len(list1)
if length > 1:
first = list1[0]
last = list1[length - 1]
list1[0] = last
list1[length - 1] = first
return list1
else:
return list1
Input 으로 주어진 리스트에서 오직 한번만 나타나는 값 (unique value)을 가지고 있는 요소는 출력해주세요.
예를 들어, 다음과 같은 리스트가 주어졌다면:
[1, 2, 3, 4, 5, 1, 2, 3, 7, 9, 9, 7]
다음과 같이 출력되어야 합니다.
4
5
my_list = [s for s in input().split()]
for element in my_list:
if my_list.count(element) == 1:
print(f"{element}\n")
my_list = [s for s in input().split()]
current_index = 0
for element in my_list:
is_unique = True
list_without_current_element = my_list[0:current_index] + my_list[current_index+1:]
for element2 in list_without_current_element:
if element == element2:
is_unique = False
break
if is_unique:
print(element)
current_index += 1
find_smallest_integer_divisor 라는 이름의 함수를 구현해 주세요.
예제:
find_smallest_integer_divisor(15) == 3
def find_smallest_integer_divisor(numb):
divisor = 2
while numb % divisor != 0:
divisor += 1
else:
return divisor
def find_smallest_integer_divisor(number):
i = 2
while number % i != 0:
i += 1
return i
Database 라는 이름의 class를 구현해 주세요.
Database 클래스는 다음의 속성(attribute)들을 가지고 있습니다.
name : database의 이름
size : 저장할 수 있는 데이터의 max 사이즈. Size를 넘어서는 데이터를 저장할 수 없다.
Database 클래스는 다음의 메소드들을 가지고 있습니다.
Insert
insert 메소드는 self 외에 2개의 parameter를 받습니다.
field와 value 입니다.
Field 는 저장하고자 하는 데이터의 필드명 이고 value는 값입니다.
Field 와 value는 내부적으로 dictionary에 저장되어야 합니다.
insert 메소드는 다음 처럼 호출 할 수 있습니다.
객체 이름이 db 라는 가정하에
db.insert("name", "정우성")
insert 메소드는 특별한 리턴값은 없습니다.
만일 내부 dictionary의 총 사이즈가 database 클래스의 size 속성보다 크면 더이상 새로운 값들을 저장하지 말아야 합니다.
Select
select 메소드는 self 외에 1개의 parameter를 받습니다.
field 입니다.
Field 는 읽고자 하는 데이터의 필드명 입니다.
내부적으로 데이터를 저장하고 있는 dictionary에서 해당 field에 해당하는 키와 연결되어 있는 값을 리턴해주어야 합니다.
예를 들어, 이미 name이라는 필드명으로 "정우성" 이라는 값을 저장했다고 한다면:
객체 이름이 db 라는 가정하에
db.select("name")
"정우성"
이 되어야 합니다.
만일 해당 필드값으로 저정되어 있는 값이 없다면 None 을 리턴해주세요.
Update
Self 외에 2개의 parameter를 받습니다.
field와 value 입니다.
이름 그대로 이미 저장되어 있는 값을 수정하는 메소드 입니다.
객체 이름이 db 라는 가정하에
db.update("name", "아이유")
만일 field값에 해당하는 데이터가 저장되어 있지 않으면 아무것도 하지 않습니다.
그리고 특별한 리턴 값은 없습니다.
Delete
delete 메소드는 self 외에 1개의 parameter를 받습니다.
field 입니다.
Field 는 지우고자 하는 데이터의 필드명 입니다.
객체 이름이 db 라는 가정하에
db.delete("name")
만일 field값에 해당하는 데이터가 저장되어 있지 않으면 아무것도 하지 않습니다.
그리고 특별한 리턴 값은 없습니다.
if field in self.db
를 모든 메소드에 추가하는 부분 => 딕셔너리의 키를 select, update, delete 할 때, 항상 먼저 해당 키가 존재하는지를 체크해야함,class Database:
def __init__(self, name, size):
self.name = name
self.size = size
self.db = {}
def insert(self, field, value):
if len(self.db) < self.size:
self.db[field] = value
def select(self, field):
if field in self.db:
x = self.db[field]
return x
else:
return None
def update(self, field, value):
if field in self.db:
self.db[field] = value
def delete(self, field):
if field in self.db:
del self.db[field]
divison 함수를 수정하여서 exception이 발생하는 경우 -1을 리턴하도록 해주세요.
def division(num1, num2):
elem = 0
try:
elem = num1 / num2
except ZeroDivisionError:
elem = -1
except Exception as e:
elem = -1
return elem
def division(num1, num2):
try:
return num1 / num2
except Exception as e:
return -1
함수 2개를 구현해주세요. 함수의 이름은 다음과 같아야 합니다.
함수 sum_of_numbers는 arugment로 주어지는 모든 수를 합한 값을 리턴해야 합니다.예를 들어, sum_of_numbers(1, 2, 3, 4, 5) 는 15를 리턴해야 하고 sum_of_numbers(1,2)는 3을 리턴해야 합니다. 만일 parameter가 주어지지 않으면 0을 리턴해야 합니다.
what_is_my_full_name 함수는 주어진 parameter중 first_name 과 last_name 이라는 parameter를 조합하여 full name을 리턴해주어야 합니다.예를 들어, first_name이 "우성" 이고 last_name 이 "정" 이면 "정 우성" 라고 리턴하면 됩니다. Last name과 first name 사이에 space(빈칸)이 들어가 있어야 합니다.만일 last_name이 없거나 first_name이 없으면 둘 중하나만 리턴하면 됩니다.예를 들어, last_name이 없으면 "우성" 이라고 이름만 리턴하면 됩니다. 마지막으로, last_name과 first_name 둘다 없으면 "Nobody" 라고 리턴하면 됩니다.
def sum_of_numbers(*numbers):
return sum(numbers)
def what_is_my_full_name(**kwargs):
if "first_name" in kwargs and "last_name" in kwargs:
return f"""{kwargs["last_name"]} {kwargs["first_name"]}"""
elif "first_name" in kwargs and "last_name" not in kwargs:
return f"""{kwargs["first_name"]}"""
elif "first_name" not in kwargs and "last_name" in kwargs:
return f"""{kwargs["last_name"]}"""
else:
return "Nobody"
print(what_is_my_full_name(first_name="우성", last_name="정"))
greeting 함수에 적용될 decorator 함수를 구현하여 greeting 함수에 적용해주세요.
Greeting 함수가 호출 되었을때 decorator 함수에 parameter 값이 greeting 함수 리턴값의 다음에 붙혀져서 리턴되어야 합니다. Decorator 함수의 이름은 name_decorator 여야 합니다.
예를 들어, 다음 처럼 정의 하여 name_decorator decorator에 "정우성"을 parameter로 적용하여 greeting을 호출하면:
@name_decorator("정우성")
def greeting():
return "Hello, "
greeting()
결과값은 다음과 같아야 합니다.
"Hello, 정우성"
def name_decorator(name):
def real_decorator(func):
def wrapper():
r = func() + name
return r
return wrapper
return real_decorator
# what it would look like
@name_decorator("정우성")
def greeting():
return "Hello, "
# 실행
greeting()
def name_decorator(name):
def _decorator(func):
def wrapper():
result = func()
return result + name
return wrapper
return _decorator
def greeting():
return "Hello, "
greeting()