Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- geometry
- Method
- Math
- Binary Search
- string
- Binary Tree
- 자바
- java
- implement
- two pointers
- Counting
- Data Structure
- database
- dynamic programming
- 코딩테스트
- Tree
- simulation
- greedy
- sorting
- Stack
- Number Theory
- 구현
- array
- Class
- Matrix
- hash table
- 파이썬
- bit manipulation
- 코테
- SQL
Archives
- Today
- Total
코린이의 소소한 공부노트
공부하면서 만난 연습문제들 - 파이썬편 본문
# 식 계산, 대입(expression evaluation & assignment)
a = 9
print(a)
>> 9
print(a - 3) # 식을 계산해서 평가하기
>> 6
print(a) # 평가만 했지 대입은 안했으므로 값은 그대로
>> 9
# 두 변수의 값 바꾸기
a = 6
b = 3
temp = a # a = 6, b = 3, temp = 6
a = b # a = 3, b = 3, temp = 6
b = temp # a = 3, b = 6, temp = 6
print(a, b)
>> 3 6
# 1부터 20까지의 자연수 중 2의 배수 또는 7의 배수를 모두 출력하기
a = set(range(2, 21, 2)) # 2부터 2씩 건너뛰어 2의 배수 집합 만들기
b = set(range(7, 21, 7)) # 7부터 7씩 건너뛰어 7의 배수 집합 만들기
# 내장함수 이용하기 1
a.union(b)
>> {2, 4, 6, 7, 8, 10, 12, 14, 16, 18, 20}
# 내장함수 이용하기 2
a.update(b)
# 반복문 이용하기
for n in b:
a.add(n)
# 숫자 리스트에서 최댓값과 최솟값 찾기
a = [40, 57, 28, 10, 2, 83, 17, 84, 27, 5, 36, 31]
# sort함수 이용하기
a.sort()
print('최댓값은 {}, 최솟값은 {}'.format(a[-1], a[0]))
>> 최댓값은 84, 최솟값은 2
# 반복문 이용하기
_max = a[0]
_min = a[0]
for n in a[1:]: # 초기값이 a[0]이기때문에 a[1]부터 비교
if n < _min:
_min = n
if n > _max:
_max = n
print('최댓값은 {}, 최솟값은 {}'.format(_max, _min))
# 숫자 리스트의 평균 구하기
a = [40, 57, 28, 10, 2, 83, 17, 84, 27, 5, 36, 31]
# 반복문 이용하기
_sum = 0
for i in a:
_sum += i
print('평균:', _sum/len(a))
>> 평균: 35.0
# sum함수 이용하기
print('평균:', sum(a)/len(a))
# reduce함수 이용하기
import functools as ft
print((ft.reduce(lambda x,y:x+y, a))/len(a))
# num이라는 자연수가 소수인지 판별하기
# 1. 반복문 이용하기 1
i = 2
while i < num:
if num % i == 0:
print(num, "은 소수가 아닙니다.")
break
i += 1
if i >= num: # 소수가 아닐 때 중복출력 방지
print(num, "은 소수입니다.")
# 2. 반복문 이용하기 2
def is_prime(n):
for i in range(2, n): # 소수는 1과 자기 자신만 약수인 것에서 착안
if n % i == 0: # 2부터 n-1까지 나눠보면서 나누어 떨어지면 소수가 아님
return False
return True
# 복소수 클래스를 정의한 후 다음을 구현해보기
1) 덧셈, 뺄셈, 곱셈 연산자 지원
2) 복소수의 크기(길이) 연산 메소드
3) 복소수 출력 지원
4) 비교 연산자 지원
import math
class Complex:
def __init__(self, a, b):
self.r = a
self.i = b
def __add__(self, num): # 덧셈
return Complex(self.r + num.r, self.i + num.i)
def __sub__(self, num): # 뺄셈
return Complex(self.r - num.r, self.i - num.i)
def __mul__(self, num): # 곱셈
if type(num) == int:
return Complex(self.r * num, self.i*num) # 복소수의 실수배
else:
return Complex(self.r * num.r - self.i * num.i, self.i * num.r + self.r * num.i) # 복소수 곱셈
def __len__(self): # 복소수의 크기
return int(math.sqrt(self.r**2 + self.i**2)) # 길이는 정수로 나와야하므로 float을 int로 변환
def __str__(self): # 복소수 출력
if self.i >= 0:
return '{} + {}i'.format(self.r, self.i)
else:
return '{} - {}i'.format(self.r, abs(self.i))
def __eq__(self, num): # 비교 연산 ==
return self.r == num.r and self.i == num.i
def __ne__(self, num): # 비교 연산 !=
return self.r != num.r or self.i != num.i
def __ge__(self, num): # 비교 연산 >=
return (self.r**2 + self.i**2) >= (num.r**2 + num.i**2)
def __le__(self, num): # 비교 연산 <=
return (self.r**2 + self.i**2) <= (num.r**2 + num.i**2)
def __lt__(self, num): # 비교 연산 <
return (self.r**2 + self.i**2) < (num.r**2 + num.i**2)
def __gt__(self, num): # 비교 연산 >
return (self.r**2 + self.i**2) > (num.r**2 + num.i**2)
def __abs__(self): # 절댓값(len과 연산은 같지만 결과는 float)
return math.sqrt(self.r**2 + self.i**2)
a = Complex(3, 4)
b = Complex(2, -1)
print(a)
>> 3 + 4i
print(len(a))
>> 5
print(a>b)
>> True
print(a-b)
>> 1 + 5i
print(abs(b))
>> 2.23606797749979
len 추가 설명: 보통 len함수는 iterable 객체(리스트, 문자열 등)의 길이를 구할 때 쓰는 함수이기 때문에 결과가 항상 정수로 나오게 되는데, 복소수의 길이는 실수라서 변환(캐스팅)이 꼭 필요하다. 만약 return부분에서 int로 바꿔주지 않는다면 TypeError: 'float' object cannot be interpreted as an integer라는 오류를 보게 될 것이다.
'Python' 카테고리의 다른 글
람다(Lambda)함수 이해 및 사용하기 (0) | 2021.06.11 |
---|---|
함수를 이해하고 활용해보기 (0) | 2021.05.27 |
반복문 - while, for (0) | 2021.05.21 |
조건문 - if (0) | 2021.05.18 |
데이터 타입, 연산자 (4) 딕셔너리, 셋 (0) | 2021.05.14 |