[2일차] 파이썬 기초 6

하은·2023년 10월 10일
0

- 비교연산자

- 숫자비교

' > ' 크다
' < ' 작다
' >= ' 크거나 같다
' <= ' 작거나 같다
' == ' 같다
' != ' 같지 않다

num1 = 10; num2 = 5 # ; 는 마침표를 의미. 한줄에 작성 가능

result = num1 > num2
print('num1 > num2 : {}'.format(result))

result = num1 >= num2
print('num1 >= num2 : {}'.format(result))

result = num1 < num2
print('num1 < num2 : {}'.format(result))

result = num1 <= num2
print('num1 <= num2 : {}'.format(result))

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

result = num1 != num2
print('num1 != num2 : {}'.format(result))

-->
num1 > num2 : True
num1 >= num2 : True
num1 < num2 : False
num1 <= num2 : False
num1 == num2 : False
num1 != num2 : True
  • 연산 결과는 bool이다 = True, False

실습) 숫자 두 개를 입력한 후 비교 연산 결과를 출력하는 코드를 작성하자

userInputNumber1 = int(input('첫 번째 숫자 입력 : '))
userInputNumber2 = int(input('두 번째 숫자 입력 : '))

print('{} > {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 > userInputNumber2))) 
print('{} >= {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 >= userInputNumber2)))
print('{} < {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 < userInputNumber2)))
print('{} <= {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 <= userInputNumber2)))
print('{} == {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 == userInputNumber2)))
print('{} != {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 != userInputNumber2)))

-->
첫 번째 숫자 입력 : 99
두 번째 숫자 입력 : 99
99 > 99 : False
99 >= 99 : True
99 < 99 : False
99 <= 99 : True
99 == 99 : True
99 != 99 : False

실습) 자동차의 전장과 전폭을 입력하면 자동차 기계 세차 가능여부를 출력하는 코드를 작성해보자

maxLength = 5200
maxWidth = 1985

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

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

-->
전장 길이 입력 : 5800
전폭 길이 입력 : 1985
전장 가능 여부 : False
전폭 가능 여부 : True

- 문자비교 : 아스키 코드를 이용한 (십진수에 해당되는 숫자)비교연산

  • 그 때마다 '아스키코드' 검색해서 보고 사용하면 된다
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)))
  • \' 은 일단 이 기능을 상실시키는데, 출력할 때 뒤에 나오는 '가 출력되게 해준다. 즉, 문자인 걸 시각화시키기 위해 넣음

- 문자와 아스키 코드 변환

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

-->

'A' -> 65
'S' -> 83
'a' -> 97
's' -> 115
  • chr() 함수 : 정수(십진수)를 문자로 표현
print('65 -> {}'.format(chr(65)))
print('83 -> {}'.format(chr(83)))
chr(65)
chr(83)

-->

65 -> A
83 -> S

- 문자열 비교 : 아스키코드가 아닌, 문자열 자체 비교(같다, 같지 않다 / 2개만 가능!)

str1 = 'Hello'
str2 = 'hello'

print('{} == {} : {}'.format(str1, str2, (str == str2)))
print('{} != {} : {}'.format(str1, str2, (str != str2)))

-->

Hello == hello : False
Hello != hello : True

실습) 알파벳을 입력하면 아스키 코드를 출력하는 코드를 작성하자

userInputAlphabet = input('알파벳 입력 : ')
print('{} : {}'.format(userInputAlphabet, ord(userInputAlphabet)))

실습) 아스키 코드를 입력하면 문자를 출력하는 코드를 작성하자

userInputASCII = int(input('아스키 코드 입력 : '))
print('{} : {}'.format(userInputASCII, chr(userInputASCII)))

- 논리 연산자

- 논리 연산자란, 피연산자의 논리(True, False)를 이용한 연산

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

  • and 연산
    A and B : A와 B 모두 True인 경우만 결과값으로 True이다.
print('{} and {} : {}'.format(True, True, (True and True)))
print('{} and {} : {}'.format(False, True, (False and True)))
print('{} and {} : {}'.format(True, False, (True and False)))
print('{} and {} : {}'.format(False, False, (False and False)))

-->
True and True : True
False and True : False
True and False : False
False and False : False
  • or 연산
    A or B : A와 B중 어느 하나만 True이면 결과값은 True이다.
print('{} or {} : {}'.format(True, True, (True or True)))
print('{} or {} : {}'.format(False, True, (False or True)))
print('{} or {} : {}'.format(True, False, (True or False)))
print('{} or {} : {}'.format(False, False, (False or False)))

-->
True or True : True
False or True : True
True or False : True
False or False : False
  • not 연산
    not A : A의 상태를 부정하는 결과를 나타낸다.
    not True : False
    not False : True
print('not {} : {}'.format(True, (not True)))
print('not {} : {}'.format(False, (not False)))

-->
not True : False
not False : True

실습) '백신접종대상자는 20세 미만 또는 65세 이상자에 한합니다.'를 논리연산자를 이용해서 코딩해보자

age = int(input('나이 입력: '))

vaccine = (age < 20) or (age >=65)
print('age: {}, vaccine: {}'.format(age, vaccine))

-->
나이 입력: 70
age: 70, vaccine: True

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

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, scoreAvgResult))
print('국어: {}, 결과: {}'.format(korScore, korResult))
print('영어: {}, 결과: {}'.format(engScore, engResult))
print('수학: {}, 결과: {}'.format(matScore, matResult))
print('과락 결과: {}'.format(subjectResult))

print('최종 결과: {}'.format(scoreAvgResult and subjectResult))

-->
국어 점수: 65
영어 점수: 70
수학 점수: 90
평균: 75.0, 결과: True
국어: 65, 결과: True
영어: 70, 결과: True
수학: 90, 결과: True
과락 결과: True
최종 결과: True

- Operator 모듈

모듈이란, 누군가 이미 만들어 놓은 훌륭한 기능(우리는 공짜로 사용할 수 있다.)

  • 수학연산 관련 모듈
  • 난수 관련 모듈
  • 연산자 관련 모듈

- Operator 모듈

  • 산술 연산자 관련 함수
import _operator

num1 = 8
num2 = 3

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 : 11
8 - 3 : 5
8 * 3 : 24
8 / 3 : 2.6666666666666665
8 % 3 : 2
8 // 3 : 2
8 ** 3 : 512
  • 비교 연산자 관련 함수
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)))

-->
8 == 3 : False
8 != 3 : True
8 > 3 : True
8 >= 3 : True
8 < 3 : False
8 <= 3 : False
  • 논리 연산자 관련 함수
flag1 = True
flag2 = False
print('{} and {} : {}'.format(flag1, flag2, _operator.and_(flag1, flag2)))
print('{} or {} : {}'.format(flag1, flag2, _operator.or_(flag1, flag2)))
print('not {} : {}'.format(flag1, _operator.not_(flag1)))

-->
True and False : False
True or False : True
not True : False

실습) 이전시간에 실습했던 백신 접종 대상자 출력 코드를 operator 모듈을 이용해서 변경해보자

import _operator

age = int(input('나이 입력: '))
vaccine = _operator.or_(_operator.lt(age, 20), _operator.ge(age, 65))
print('age: {}, vaccine: {}'.format(age, vaccine))

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

import operator
import random

rInt = random.randint(10, 100)

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

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

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

Traceback (most recent call last):
File "C:\Users\User\Desktop\python_ex\2_021\work.py", line 9, in
import random
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\random.py", line 54, in
from operator import index as _index
ImportError: cannot import name 'index' from 'operator' (C:\Users\User\Desktop\python_ex\2_021\operator.py)
어떻게 해야 하는 것 ㅠㅠ ㅠㅠㅠㅠ

0개의 댓글