(기초) 데이터 입/출력, 산술 연산자

임경민·2023년 9월 5일
1
post-thumbnail
post-custom-banner

데이터 입력

input 함수

  • input() 함수를 이용해서 입력한 데이터는 항상 문자(열) 자료형
  print('키보드를 통해서 데이터를 입력하세요.')
  userInputData = input()

  print(userInputData)
  print(type(userInputData))

형 변환 함수를 이용한 형 변환

userInputData = float(input('키보드를 통해서 데이터를 입력하세요.')) # 실수변환

print(userInputData)
print(type(userInputData))

예제

  1. 삼각형 넓이
  • 사용자가 입력한 데이터를 이용, 도형 넓이 구하기
width = int(input('가로 입력: ')
height = int(input('세로 입력: ')

print(width * height) # 사각형
print(width * height / 2) # 삼각형
  1. 입력한 문자의 Type 파악하기
userName = input('이름 입력: ')

print(userName)
print(type(userName)

데이터 출력

기본적인 데이터 출력

userName = 'Hong gil dong'
print(userName)

userAge = 20
print(userAge)

콤마(,)를 이용한 데이터 연속 출력

  • 연속으로 출력하기 위해 사용
userName = 'Hong gil dong'
userAage = 20
print('User name : ', userName)
print('User age : ', userAge)

print('User name : ', userName, ', User age : ', userAge)
  • print 함수는 자동개행 옵션이 들어감
    • 자동개행 방지 방법
      • 빈 문자를 통해 막을 수 있다.
print('3*5', end='')

포맷 문자열을 이용한 데이터 출력

print(f'User name : {userName}')
print(f'User name : {userName}, User age : {userAge}')

특수문자

\n : 개행
\t : 탭(Tab)

예제

  1. 삼각형 넓이 구하기
width = int(input('가로길이 : '))
height = int(input('세로길이 : '))

triangle = width * height / 2
print(f'width : {width}, height : {height}, triangle : {triangle}')

Format 함수

Format() 함수를 이용한 출력

userName = 'Hong Gil dong'
userAge = 21

print(userName)
print(userAge)

print('User name : {}' .format(userName))
print('User age : {}' .format(userAge))

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

형식 문자

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

%s : 문자열
%d : 정수형
%f : 실수형

userName = 'Hong Gil dong'
userAge = 21

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

pi = 3.14
print('pi : %f' % pi)
print('pi : %d' % pi)

소숫점 자리수 정하기

  • 문자형 앞에 ".n" 입력 (n: natural number)
pi = 3.14
print('pi : %f' % pi)
print('pi : %.1f' % pi)

print('pi : %d' % pi)

연산자

  • 연산자란?
    • 피연산자를 이용하여 계산
      Result = data1 + data2
data1, data2 : 피연산자
  • 연산자 종류

    산술 연산자: +, -, , /, %, **, //
    할당 연산자: =, +=, -=,
    =, /=, %=, //=
    비교 연산자: >, >=, <, <=, ==, !=
    논리 연산자: and, or, not

산술 연산자

덧셈

  • 숫자를 이용한 계산
num1 = 10
num2 = 20

print(num1 + num2)
num1 = 3.14
num2 = 0.12

print('num1 + num2 = %f' % (num1 + num2))
print('num1 + num2 = %.2f' % (num1 + num2)) # 소숫점 둘째자리까지 표기
  • 문자를 이용한 계산
str1 = 'Good'
str2 = ' '
str3 = 'morning'

print(str1 + str2 + str3)

정수와 문자는 계산할 수 없다.

예제

  1. 국어, 영어, 수학 성적의 합계를 구하여라.
korScore = int(input('국어 점수 : '))
engScore = int(input('영어 점수 : '))
matScore = int(input('수학 점수 : '))

totalScore = korScore + engScore + matScore

print('국어, 영어, 수학 점수 합계 : {}' .format(totalScore))

뺄셈

num1 = 10
num2 = 20

print(num1 + num2)
num1 = 3.14
num2 = 0.12

print('num1 + num2 = %f' % (num1 + num2))
print('num1 + num2 = %.2f' % (num1 + num2))

곱셈

  • 숫자(정수, 실수)를 이용한 곱셈
num1 = 3.14
num2 = 20
result = num1 * num2
print('%.2f' % result) # 소숫점 둘째자리까지 출력
  • 문자(열)을 이용한 곱셈
str = 'Hi '
result = str * 5

print(result)

나눗셈

  • 0으로 나눌 수 없다 (error 발생)
  • 나눗셈 결과는 항상 float형 이다.
num1 = 8
num2 = 2
result = num1 / num2
print('result : {}' .format(result))

예제

  1. 국어, 영어, 수학 과목 합계와 평균 구하기
korScore = int(input('국어 점수 : '))
engScore = int(input('영어 점수 : '))
matScore = int(input('수학 점수 : '))

totalScore = korScore + engScore + matScore
avgScore = totalScore / 3

print('국어, 영어, 수학 점수 합계는 {}이고, 평균은 {}이다.' .format(totalScore, avgScore))

나머지

  • 나눗셈 결과 나머지 구함
num1 = 10
num2 = 3

result = num1 // num2

print(result)

  • 나눗셈 결과 몫 구함
num1 = 10
num2 = 3

result = num1 % num2

print(result)

divmod 함수

  • 몫과 나머지를 동시에 추출하는 함수
divmod(A, B) : A를 B로 나누었을 때 몫과 나머지
(a, b) : 몫은 a, 나머지는 b)

예제

  1. 몫과 나머지 구하기
num1 = 20
num2 = 3

result = divmod(num1, num2)
print('result: {}' .format(result))
  1. 한 모둠 별 학생 수 구하기
allStuCnt = int(input('전체 학생 수: '))
stuCntOfGroup = int(input('한 모둠 학생 수: '))

result = divmod(allStuCnt, stuCntOfGroup)

print('전체 학생 수: {}' .format(allStuCnt))
print('한 모둠 학생 수: {}' .format(stuCntOfGroup))

print('모둠 수: {}' .format(result[0]))
print('남는 학생 수: {}' .format(result[1]))

거듭제곱

  • 같은 수를 여러 번 곱한 값을 구함
num1 = 2
num2 = 3
result = num1 ** num2

print('result : {}' .format(result))
  • n의 m제곱근 공식
    mn^{m}\sqrt{n}
num1 = 2
num2 = 3
result = num1 ** (1 / num2)

print('result : {}' .format(result))

sqrt 함수

  • 제곱근을 구함
    n\sqrt{n}
import math

num1 = 9
sqrtNum = math.sqrt(num1)

print('{}의 제곱근: {}' .format(num1, sqrtNum))

pow 함수

  • 거듭제곱을 구함
import math

num1 = 2
num2 = 3

print('{}의 {}제곱 : {}' .format(num1, num2, math.pow(num1, num2)))

예제

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

firstMonthMoney = 200
after12Month = ((firstMonthMoney * 0.01) ** 12) * 100

print('12개월 후 용돈 : {}' .format(after12Month))

# format 변환
after12Month = int(after12Month)
strResult = format(after12Month, ',') # 세 자리 수마다 ,로 찍어준다.
print(strResult, '원')

복합 연산자

  • 할당(대입)연산자
    • 오른쪽의 값을 왼쪽에 할당(대입)
num1 = 10
num2 = 20
result = num1 + num2
  • 복합 연산자
    • 연산 후 할당하는 것을 간략하게 표현
# 기존 할당(대입)연산자 사용
num1 = num1 + 5 
# 복합연산자 사용
num1 += 5 

예제

  1. 단순 계산
num = 10
num += 3 # num = num + 3

print('num : {}' ,format(num))
  1. 연간 누적 강수량을 출력해보자
rainAmount = 0
totalRainAmount = 0

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

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

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

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

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

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

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

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

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

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

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

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

rainAvgAmount = totalRainAmount / 12

print('-' * 12)
print('연간 누적 강수량 : {}mm' .format(format(totalRainAmount, ',')))
print('연간 평균 강수량 : {}mm' .format(rainAvgAmount))
print('-' * 12)

비교 연산자

숫자 비교

  • 연산 결과는 bool (True / False)

예제

  1. 숫자 두 개를 입력한 후 비교 연산 결과를 출력하는 코드 작성해보자.
num1 = int(input('첫 번째 숫자 입력 : ')) ; num2 = int(input('두 번째 숫자 입력 : '))

print('{} > {} : {}' .format(num1, num2, num1 > num2))
print('{} < {} : {}' .format(num1, num2, num1 < num2))
print('{} >= {} : {}' .format(num1, num2, num1 >= num2))
print('{} <= {} : {}' .format(num1, num2, num1 <= num2))
print('{} != {} : {}' .format(num1, num2, num1 != num2))
  1. 자동차 전장과 전폭을 입력하면 자동차 기계 세차 가능여부를 출력하는 코드를 작성해보자. (전장: 5200mm ,전폭: 1985mm)
maxLength = 5200
maxWidth = 1985

myCarLength = int(input('전장 길이 입력 : '))
myCarWidth = int(input('전폭 길이 입력 : '))

print('전장 길이 가능여부 : {}' .format(myCarLength < maxLength))
print('전폭 길이 가능여부 : {}' .format(myCarWidth < maxWidth))

문자 비교

  • 아스키 코드(ASCII Code)를 이용한 비교연산
char1 = 'A' # 65
char2 = 'S' # 83

print('\'{}\' > \'{}\' : {}' .format(char1, char2, char1 > char2))
print('\'{}\' >= \'{}\' : {}' .format(char1, char2, char1 >= char2))
print('\'{}\' < \'{}\' : {}' .format(char1, char2, char1 < char2))
print('\'{}\' <= \'{}\' : {}' .format(char1, char2, char1 <= char2))
print('\'{}\' == \'{}\' : {}' .format(char1, char2, char1 == char2))
print('\'{}\' != \'{}\' : {}' .format(char1, char2, char1 != char2))

Order 함수

  • 문자를 십진수(정수)로 표현
print('\'a\' -> {}' .format(ord('a')))
print('\'s\' -> {}' .format(ord('s')))

Chr 함수

  • 십진수를 문자로 표현
print('65 -> {}' .format(chr(65)))
print('83 -> {}' .format(chr(83)))

예제

  1. 알파벳을 입력하면 아스키 코드를 출력하는 코드를 작성하자.
inputAlphbet = input('알파벳 입력: ')

print('{} -> {}' .format(inputAlphbet, ord(inputAlphbet)))

  1. 아스키 코드를 입력하면 문자를 출력하는 코드를 작성하자.
inputNumber = int(input('숫자 입력: '))

print('{} -> {}' .format(inputNumber, chr(inputNumber)))

논리연산자

논리연산자 종류

and, or, not

A and B : A와 B 모두 True이면 True 
A or B : A와 B 둘 중 하나만 True여도 True
not A : A의 상태를 부정하는 결과

예제

print('{} and {} : {}' .format(True, True, (True and True)))
print('{} and {} : {}' .format(False, True, (False and True)))
print('{} or {} : {}' .format(False, True, (False or True)))
print('{} or {} : {}' .format(False, False, (False or False)))
print('not {} : {}' .format( False, (not False)))
  1. 백신 접종 대상자 확인
age = int(input('나이 입력: '))

vaccine = (age < 20) or (age >= 65)
print('age = {}, vaccine: {}' .format(age, vaccine))
  1. 과락여부 확인
# 국,영,수 과락 여부 확인

passScore1 = 60 ; passScore2 = 70

korScore = int(input('국어점수 : '))
engScore = int(input('영어점수 : '))
matScore = int(input('수학점수 : '))

scoreAvg = (korScore + engScore + matScore) / 3

scoreAvgResult = scoreAvg >= passScore2

# 과목별 과락여부

korResult = korScore >= passScore1
engResult = engScore >= passScore1
matResult = matScore >= passScore1

subjectResult = korResult and engResult and matResult

print('평균: {}, 결과: {}' .format(scoreAvg, subjectResult))

Operator 모듈

모듈

  • 누군가 이미 만들어 놓은 기능
    • 수학 연산 관련 모듈
    • 난수 관련 모듈
    • 연산자 관련 모듈

산술 연산자 관련 함수

연산자함수
+operator.add()
-operator.sub()
*operator.mul()
/operator.truediv()
%operator.mod()
//operator.floordiv()
**operator. pow()
import operator

num1 = 8
num2 = 3

print('{} + {} = {}' .format(num1, num2, operator.add(num1, num2)))

예제

  1. random과 operator 모듈을 사용해서 10 부터 100 사이의 난수 중 십의 자리와 일의 자리가 각각 3의 배수인지 판단하는 코드를 작성해보자.
import random
import operator

rint = random.randint(10, 100)

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

print('난수: {}' .format(rint))

print('십의 자리는 3의 배수이다. : {}, 일의 자리는 3의 배수이다. : {}' .format(operator.mod(num10, 3) == 0, operator.mod(num1, 3) == 0))
post-custom-banner

0개의 댓글