[제로베이스 데이터 분석 스쿨 2기] Python (feat. 데이터 입력 및 출력, 산술 연산자, 복합 연산자, 비교 연산자, 논리 연산자, Operator 모듈)

박세우·2024년 1월 7일

데이터 입력

input(): 데이터 입력을 위한 함수

input() 함수를 이용해서 입력한 데이터는 항상 문자(열) 자료형. 따라서, 형 변환 함수를 이용하여 형 변환을 해야함.
ex) userInputData = int(input('정수형을 입력하세요.'))

_실습_
**사용자가 가로, 세로 길이를 입력하면 삼각형과 사각형의 넓이가 출력되는 코드를 작성해보자.**
width = float(input('가로길이: '))
height = float(input('높이: '))

triangle = width * height /2
square = width * height

print('삼각형의 넓이는 =', triangle)
print('사각형의 넓이는 =', square)

데이터 출력

format() 함수를 이용한 데이터 출력

userName = "hong"
userAge = 21

print('User Name: {}'.format(userName))
print('User Age: {}'.format(userAge))

print('Use Name: {}, User Age: {}'.format(userName, userAge))
print('Use Name: {1}, User Age: {0}'.format(userName, userAge)) #순서를 바꾸고 싶을 땐

print('나의 이름은 {0}이고, 나이는 {1}살 입니다. {0}이름은 아버지께서 지어주셨습니다.'. format(userName,userAge))

형식 문자를 이용한 데이터 출력

%s -> 문자열
%d -> 정수
%f -> 실수
userName = "hong"
userAge = 21

print('User Name: %s' % userName)
print('User Age: %d' % userAge)
print('User Name: %s, User Age: %d' % (userName,userAge))

소수점 자릿수 정하기

%.nf -> 소수점 n자리 표현
pi = 3.14
print('Pie: %f' % pi)
print('Pie: %1f' % pi) #소수 첫 째자리

실습

반지름 입력: 3
원주율 입력: 3.14192
radius: 3.0
pi: 3.14192
radius: 3.000000, pi: 3.141920
radius: 3.00, pi: 3.14

radius= float(input('반지름 입력: '))
pi = float(input('원주율 입력: '))

print('radius: {}\npi: {}'.format(radius, pi))
print('radius: %.6f, pi: %.6f' % (radius, pi))
print('radius: %.2f, pi: %.2f' % (radius, pi))

산술 연산자 (덧셈, 뺄셈)

실습

국어 점수: 85
영어 점수: 90
영어 점수: 95
국어 점수 85
영어 점수 90
수학 점수 95
합계 점수 270

kor = int(input('국어 점수: '))
eng = int(input('영어 점수: '))
math = int(input('영어 점수: '))

total = kor + eng + math

print('국어 점수 {}'.format(kor))
print('영어 점수 {}'.format(eng))
print('수학 점수 {}'.format(math))
print('합계 점수 {}'.format(total))

실습2

알바비: 800000
카드 값: 453700
partTimeMoney: 800000원
cardMoney: 453700원
남는 돈: 346300원

partTimeMoney = int(input('알바비: '))
cardMoney = int(input('카드 값: '))
result = partTimeMoney - cardMoney

print('partTimeMoney: {}원'.format(partTimeMoney))
print('cardMoney: {}원'.format(cardMoney))
print('남는 돈: {}원'.format(result))

산술 연산자 (곱셈, 나눗셈)

실습

국어 점수: 85
영어 점수: 90
수학 점수: 90
국어 점수: 85
영어 점수: 90
수학 점수: 90
합계: 265
평균: 88.33333333333333
평균 88.33

kor = int(input('국어 점수: '))
eng = int(input('영어 점수: '))
math = int(input('수학 점수: '))
total = kor + eng + math
avg = total/3

print('국어 점수: {}'.format(kor))
print('영어 점수: {}'.format(eng))
print('수학 점수: {}'.format(math))
print('합계: {}'.format(total))
print('평균: {}'.format(avg))
print('평균 %.2f' % (avg))

산술 연산자 (나머지와 몫)

나머지 구하기: /

num1 = 10
num2 = 3
result = num1/ num2
print('num1: {}, num2: {}, result: {}'. format(num1, num2, result))

몫 구하기: %

result = num1 % num2
print('num1: {}, num2: {}, result: {}'.format(num1, num2, result1))

나머지와 몫 한 번에 구하기: divmod()

result = divmod(num1, num2)
print('result: {}'.format(result))
print('몫: {}'.format(result[0]))
print('나머지: {}'.format(result[1]))

실습

전체 학생 수: 25
한 모둠 학생 수: 4
전체 학생 수: 25
한 모둠의 학생 수: 4
모둠 수: 6
남는 학생 수: 1

totalStu = int(input("전체 학생 수: "))
stu_of_group = int(input('한 모둠 학생 수: '))
result = divmod(totalStu, stu_of_group)

print("전체 학생 수: {}". format(totalStu))
print("한 모둠의 학생 수: {}". format(stu_of_group))
print("모둠 수: {}". format(result[0]))
print("남는 학생 수: {}". format(result[1]))

실습2

Q. 123개의 사과를 4개씩 직원들에게 나누어 주려고 한다. 최대 나누어 줄 수 있는 직원수와 남는 사과 개수를 출력해보자.

A. 직원당 사과 수: 30, 남는 사과: 3
employee = 123
apple = 4
result = divmod(employee,apple)

print('직원당 사과 수: {}'. format(result[0])) #30
print('남는 사과 수: {}'. format(result[1])) #3

산술 연산자 (거듭제곱)

거듭제곱 구하기: **

num1 = 2
num2 = 3
result = num1 ** num2
print("result:{}".format(result))

제곱근 구하기: n ** (1/m)

#2의 제곱근 구하기
result = 2 ** (1/2)
print('result: {}'.format(result))
print('2의 제곱근 %.2f' % result)

#2의 3제곱근
result2 = 2 ** (1/3)
print('result: {}'.format(result2))
print('3의 제곱근 %.2f' % result2)

#2의 4제곱근
result3 = 2 ** (1/4)
print('result: {}'.format(result3))
print('4제곱근: %.2f' % result3)

sqrt()함수를 이용한 제곱근 구하기 (단, sqrt() 함수는 오직 제곱근만 구해줌)

import math
#2의 제곱근
print('2의 제곱근 %f' % math.sqrt(2))
print('2의 제곱근 %.2f' % math.sqrt(2))

#3의 제곱근
print('3의 제곱근 %f' % math.sqrt(3))
print('3의 제곱근 %.2f' % math.sqrt(3))

#4의 제곱근
print('4의 제곱근 %.2f' % math.sqrt(4))

pow() 함수를 이용한 거듭제곱 구하기

import math
#2^3
print('2의 3제곱 %.2f' % math.pow(2,3))

#3^4
print('3의 4제곱 %.2f' % math.pow(3,4))

실습
아들이 엄마한테 용돈을 받는데, 첫 달에는 200원을 받고 매월 이전 달의 2배씩 인상하기로 했다. 12개월째 되는 달에는 얼마를 받을 수 있는지 계산해 보자.

firstMon = 200
after12 = ((firstMon0.01) ** 12) 100
print('12개월 후 총액: {}'. format(after12))

*3자리수 마다 ,찍기
after12 = int(after12)
after12 = format(after12, ',')
print(after12, '원')

복합 연산자

+= --> 덧셈 연산 후 할당

num += 3 #num= num + 3
print('num: {}'. format(num))

-= --> 뺄셈 연산 후 할당

num -= 3 #num= num - 3
print('num: {}'. format(num))

*= --> 곱셈 연산 후 할당

num = 3 #num= num 3
print('num: {}'. format(num))

/= --> 나눗셉 연산 후 할당

num /= 3 #num= num / 3
print('num: {}'. format(num))

%= --> 나머지 연산 후 할당

num %= 3 #num= num % 3
print('num: {}'. format(num))

//= --> 몫 연산 후 할당

num //= 3 #num= num // 3
print('num: {}'. format(num))

**= --> 거듭제곱 연산 후 할당

num **= 3 #num= num ** 3
print('num: {}'. format(num))

실습(누적 강수량 찾기)

rainamount = 0
totalRain = 0

totalRain += 30
print('1월 누적 강수량: {}'.format(totalRain))

totalRain += 45
print('2월 누적 강수량: {}'.format(totalRain))

totalRain += 47
print('3월 누적 강수량: {}'.format(totalRain))

totalRain += 55
print('4월 누적 강수량: {}'.format(totalRain))

totalRain += 65
print('5월 누적 강수량: {}'.format(totalRain))

totalRain += 100
print('6월 누적 강수량: {}'.format(totalRain))

totalRain += 128
print('7월 누적 강수량: {}'.format(totalRain))

totalRain += 209
print('8월 누적 강수량: {}'.format(totalRain))

totalRain += 204
print('9월 누적 강수량: {}'.format(totalRain))

totalRain += 186
print('10월 누적 강수량: {}'.format(format(totalRain, ',')))

totalRain += 67
print('11월 누적 강수량: {}'.format(format(totalRain, ',')))

totalRain += 25
print('12월 누적 강수량: {}'.format(format(totalRain, ',')))

rain_avg = totalRain/12
print('-'*30)
print('연간 누적 강수량: {}mm'.format(format(totalRain, ',')))
print('연간 평균 강수량: {}mm'.format(format(totalRain, ',')))
print('-'*30)

비교 연산자 (숫자 비교)

같다: ==/ 같지 않다: !=

실습

**자동차의 전장과 전폭을 입력하면 자동차 기계 세차 가능여부를 출력하는 코드를 작성해보자.
(최대 전장 길이: 5200mm, 최전폭: 1985)**
max_length = 5200
max_width = 1985

my_car_length = int(input('전장 길이 입력: '))
my_car_width = int(input('전폭 길이 입력: '))

print('전장 가능 여부: {}'. format(max_length >= my_car_length))
print('전폭 가능 여부: {}'. format(max_width >= my_car_width))

비교 연산자 (문자 비교)

실습

cha1 = 'A' #65
cha2 = 'S' #83

print('\'{} > \'{}\' : {}'.format(cha1,cha2, (cha1 > cha2))) #\를 사용하면 다음 기호 무시
print('\'{} < \'{}\' : {}'.format(cha1,cha2, (cha1 < cha2)))
print('\'{} >= \'{}\' : {}'.format(cha1,cha2, (cha1 >= cha2)))
print('\'{} <= \'{}\' : {}'.format(cha1,cha2, (cha1 <= cha2)))
print('\'{} == \'{}\' : {}'.format(cha1,cha2, (cha1 == cha2)))
print('\'{} != \'{}\' : {}'.format(cha1,cha2, (cha1 != cha2)))

논리 연산자

논리 연산자 종류: and, or, not

실습

**'백신 접종 대상자는 20세 미만 또는 65세 이상자에 한합니다.'를 논리연산자를 이용해서 코딩.
age = int(input("나이를 입력하세요: "))
vaccine = (age<20) or (age>=65)
print('age: {} -> vaccine: {}'.format(age,vaccine))

**국어, 영어, 수학 점수를 입력하고 평균이 70점 이상이면 True를 출력하는 코드를 작성해 보자. (단, 과목별 점수가 최소 60 이상인 경우에 True를 출력한다.)
pass_score1 = 70
pass_score2 = 60

kor = int(input('국어 점수: '))
eng = int(input('영어 점수: '))
math = int(input('수학 점수: '))

avg = (kor + eng + math)/3
avg_result = avg >= pass_score1

result_kor = kor >= pass_score2
result_eng = eng >= pass_score2
result_math = math >= pass_score2

subject_result = result_kor and result_eng and result_math

print('평균: {} -> 결과: {}'.format(avg, avg_result))
print('과락 결과: {}'. format(subject_result))
print('최종 결과: {}'.format(avg_result and subject_result))

Operator 모듈

산술 연산자 관련 함수

덧셈: print('{} + {}: {}'.format(num1, num2, operator.add(num1,num2)))
뺄셈: print('{} - {}: {}'.format(num1, num2, operator.sub(num1,num2)))
곱셈: print('{} * {}: {}'.format(num1, num2, operator.mul(num1,num2)))
나눗셈: print('{} / {}: {}'.format(num1, num2, operator.truediv(num1,num2)))
나머지: print('{} % {}: {}'.format(num1, num2, operator.mod(num1,num2))) #나머지
몫: print('{} // {}: {}'.format(num1, num2, operator.floordiv(num1,num2))) #몫
제곱: print('{} ** {}: {}'.format(num1, num2, operator.pow(num1,num2))) #8의 3승

비교 연산자 관련 함수

같다: print('{} == {}: {}'.format(num1, num2, operator.eq(num1,num2)))
같지 않다: print('{} != {}: {}'.format(num1, num2, operator.ne(num1,num2)))
초과: print('{} > {}: {}'.format(num1, num2, operator.gt(num1,num2)))
이상: print('{} >= {}: {}'.format(num1, num2, operator.ge(num1,num2)))
미만: print('{} < {}: {}'.format(num1, num2, operator.lt(num1,num2)))
이하: print('{} <= {}: {}'.format(num1, num2, operator.le(num1,num2)))

논리 연산자 관련 함수

AND: print('{} and {}: {}'.format(flag1, flag2, operator.and(flag1,flag2)))
OR: print('{} or {}: {}'.format(flag1, flag2, operator.or
(flag1,flag2)))
NOT: print('not {}: {}'.format(flag1, flag2, operator.not_(flag1)))

실습

**random과 operator 모듈을 사용해서 10부터 100까지의 난수 중 십의 자리와 일의 자리가 각각 3의 배수인지 판단하는 코드 만들기**
import random

random = random.randint(10,100)

num10 = operator.floordiv(random,10)
num1 = operator.mod(random,10)

print('난수: {}'.format(random))
print('십의 자리: {}'.format(num10))
print('일의 자리: {}'.format(num1))

print('십의 자리는 3의 배수이다: {}'.format(operator.eq(operator.mod(num10,3),0)))
print('일의 자리는 3의 배수이다: {}'.format(operator.eq(operator.mod(num1,3),0)))
profile
최고의 데이터 분석가를 목표로 하는 박세우입니다.

0개의 댓글