요구조건
- 클래스를 활용해 작성했던 계산기 코드를 활용해주세요
- 기존처럼 사용자의 입력을 받고 출력하되, try / except를 활용해 사용자의 입력을 검증하는 코드를 추가해주세요
- 두 번쨰 숫자에 0을 입력하고 나누기를 시도할 경우 “0으로 나눌 수 없습니다” 문구를 출력해주세요
- 숫자가 아닌 다른 값을 입력했을 경우 “숫자만 입력 가능합니다” 라는 문구를 출력해 주세요
1) class를 선언하고, 변수 num1과 num2를 정수로 설정해준다. 이때 try/except 를 사용하여 변수에 입력된 값이 정수가 아닐 경우 "숫자만 입력 가능합니다"라는 문구를 출력한다.
class Calc(): # Calc라는 이름의 class 선언
def set_number(self, num1, num2):
try:
self.num1 = int(num1)
self.num2 = int(num2)
except ValueError:
print("숫자만 입력 가능합니다")
2) +, -, *
연산에 대한 메소드는 그대로 입력해주고, 0으로 나누면서 에러가 발생했을 때 처리하기 위해 divide 메소드에 try/except를 사용하였다.
def plus(self):
result = self.num1 + self.num2
return result
def minus(self):
result = self.num1 - self.num2
return result
def multiple(self):
result = self.num1 * self.num2
return result
def divide(self):
try:
result = self.num1 / self.num2
return result
except ZeroDivisionError: # 0으로 나누면서 에러가 발생했을 때
print("0으로 나눌 수 없습니다.")
3) 결과를 출력하기 위한 코드는 다음과 같다.
calc = Calc()
calc.set_number(20, 0)
print(calc.plus()) # 더한 값
print(calc.minus()) # 뺀 값
print(calc.multiple()) # 곱한 값
print(calc.divide()) # 나눈 값
✨ 완성된 전체 코드
class Calc(): # Calc라는 이름의 class 선언
def set_number(self, num1, num2):
try:
self.num1 = int(num1)
self.num2 = int(num2)
except ValueError:
print("숫자만 입력 가능합니다")
def plus(self):
result = self.num1 + self.num2
return result
def minus(self):
result = self.num1 - self.num2
return result
def multiple(self):
result = self.num1 * self.num2
return result
def divide(self):
try:
result = self.num1 / self.num2
return result
except ZeroDivisionError: # 0으로 나누면서 에러가 발생했을 때
print("0으로 나눌 수 없습니다.")
calc = Calc()
calc.set_number(20, 0)
print(calc.plus()) # 더한 값
print(calc.minus()) # 뺀 값
print(calc.multiple()) # 곱한 값
print(calc.divide()) # 나눈 값
요구조건
- filter 혹은 리스트 축약식을 사용해 코드를 작성해주세요
- 제공 된 사용자들 중 나이가 20살 미만인 사람들은 제외해주세요
- 사용자들을 나이 순으로 정렬해주세요
1) 조금 더 보기 좋게 출력하기 위해 pprint를 import를 해주고, people이라는 리스트를 생성해주었다.
from pprint import pprint
people = [
("Blake Howell", "Jamaica", 18, "aw@jul.bw"),
("Peter Bowen", "Burundi", 30, "vinaf@rilkov.il"),
("Winnie Hall", "Palestinian Territories", 22, "moci@pacivhe.net"),
("Alfred Schwartz", "Syria", 29, "ic@tolseuc.pr"),
("Carrie Palmer", "Mauritius", 28, "fenlofi@tor.aq"),
("Rose Tyler", "Martinique", 17, "as@forebjab.et"),
("Katharine Little", "Anguilla", 29, "am@kifez.et"),
("Brent Peterson", "Svalbard & Jan Mayen", 22, "le@wekciga.lr"),
("Lydia Thornton", "Puerto Rico", 19, "lefvoru@itbewuk.at"),
("Richard Newton", "Pitcairn Islands", 17, "da@lasowiwa.su"),
("Eric Townsend", "Svalbard & Jan Mayen", 22, "jijer@cipzo.gp"),
("Trevor Hines", "Dominican Republic", 15, "ev@hivew.tm"),
("Inez Little", "Namibia", 26, "meewi@mirha.ye"),
("Lloyd Aguilar", "Swaziland", 16, "oza@emneme.bb"),
("Erik Lane", "Turkey", 30, "efumazza@va.hn"),
]
2) 나이가 20살 미만인 사람들은 제외하기 위해 filter를 사용하는 방법, 축약식을 사용하는 방법 두가지로 코드를 작성했다.
# 나이가 20살 미만인 사람들은 제외(Filter 사용)
person = list(filter(lambda x: x[2] >= 20, people))
# 나이가 20살 미만인 사람들은 제외(축약식 사용)
person = [x for x in people if x[2] >= 20]
3) 마지막으로 sort를 사용하여 사용자들을 나이 순으로 정렬하였다. 사용자의 나이는 people 리시트의 2번째 요소이므로 x[2]를 기준으로 정렬해준다.
# 사용자들을 나이 순으로 정렬
person.sort(key=lambda x: x[2])
pprint(person1)
✨ 완성된 전체 코드
from pprint import pprint
people = [
("Blake Howell", "Jamaica", 18, "aw@jul.bw"),
("Peter Bowen", "Burundi", 30, "vinaf@rilkov.il"),
("Winnie Hall", "Palestinian Territories", 22, "moci@pacivhe.net"),
("Alfred Schwartz", "Syria", 29, "ic@tolseuc.pr"),
("Carrie Palmer", "Mauritius", 28, "fenlofi@tor.aq"),
("Rose Tyler", "Martinique", 17, "as@forebjab.et"),
("Katharine Little", "Anguilla", 29, "am@kifez.et"),
("Brent Peterson", "Svalbard & Jan Mayen", 22, "le@wekciga.lr"),
("Lydia Thornton", "Puerto Rico", 19, "lefvoru@itbewuk.at"),
("Richard Newton", "Pitcairn Islands", 17, "da@lasowiwa.su"),
("Eric Townsend", "Svalbard & Jan Mayen", 22, "jijer@cipzo.gp"),
("Trevor Hines", "Dominican Republic", 15, "ev@hivew.tm"),
("Inez Little", "Namibia", 26, "meewi@mirha.ye"),
("Lloyd Aguilar", "Swaziland", 16, "oza@emneme.bb"),
("Erik Lane", "Turkey", 30, "efumazza@va.hn"),
]
# 나이가 20살 미만인 사람들은 제외(Filter 사용)
person1 = list(filter(lambda x: x[2] >= 20, people))
# 나이가 20살 미만인 사람들은 제외(축약식 사용)
person2 = [x for x in people if x[2] >= 20]
# 사용자들을 나이 순으로 정렬
person2.sort(key=lambda x: x[2])
pprint(person2)