yangbongsoo / blockStudy

1 stars 0 forks source link

python-condition #21

Closed yangbongsoo closed 1 year ago

yangbongsoo commented 1 year ago

condition

# 윤년
year = 2022
if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):
    print("윤년")
else:
    print("윤년 아님")

problem1

# 세 개의 정수를 입력 받아 내림차순으로 정력하여 출력
# 한개의 입력 함수만 사용해라
n = input("세 개의 정수를 입력하시오 : ")
n1, n2, n3 = n.split()
n1 = int(n1)
n2 = int(n2)
n3 = int(n3)

if n1 <= n2:
    n1, n2 = n2, n1

if n2 <= n3:
    n2, n3 = n3, n2

if n1 <= n2:
    n1, n2 = n2, n1

print("내림차순 성렬: {} {} {}".format(n1, n2, n3))

problem2

# 수식을 입력 받아 연산 결과를 출력 + - * / 연산자만 구현, 그 외는 허용하지 않는 다는 메세지 출력

str = input("수식 입력(예: 20 * 40) : ")
n1, exp, n2 = str.split()
n1 = float(n1)
n2 = float(n2)

if exp == "+":
    print("%.6f + %.6f = %.6f" % (n1, n2, n1 + n2))
elif exp == "-":
    print("%.6f - %.6f = %.6f" % (n1, n2, n1 - n2))
elif exp == "*":
    print("%.6f * %.6f = %.6f" % (n1, n2, n1 * n2))
elif exp == "/":
    if n2 == 0:
        print("%.6f 로 나누기를 수행할 수 없습니다." % n2)
    else:
        print("{} / {} = {}".format(n1, n2, n1 / n2))
else:
    print("{} 지원하지 않는 연산자입니다.".format(exp))

problem3

# 십의 자리 정수 두 개를 입력받아 각 자리 수를 교차 비교하여 같은 수 인지, 자리값만 다른지, 하나의 수만 일치하는지 모두 일치하지 않는지 구분 출력

n = input("두 자리 정수 두개를 입력 : ")
num1, num2 = n.split()

num1_0index = num1[0]
num1_1index = num1[1]
num2_0index = num2[0]
num2_1index = num2[1]

if num1_0index == num2_0index and num1_1index == num2_1index:
    print("두 정수는 모두 {} 로 같은 정수입니다".format(num1))

# 하나의 숫자 일치 경우의 수 총 4가지
elif num1_0index == num2_0index and num1_1index != num2_1index:  # 54 57
    print("{}, {} : 하나의 숫자만 일치합니다.".format(num1, num2))
elif num1_0index != num2_0index and num1_1index == num2_1index:  # 45 75
    print("{}, {} : 하나의 숫자만 일치합니다.".format(num1, num2))
elif num1_0index != num2_1index and num1_1index == num2_0index:  # 45 56
    print("{}, {} : 하나의 숫자만 일치합니다.".format(num1, num2))
elif num1_1index != num2_0index and num1_0index == num2_1index:  # 54 35
    print("{}, {} : 하나의 숫자만 일치합니다.".format(num1, num2))

elif num1_0index == num2_1index and num1_1index == num2_0index:  # 54 45
    print("{}, {} : 자리 값만 다른 정수입니다.".format(num1, num2))
else:
    print("{}, {} : 일치하지 않는 정수입니다.".format(num1, num2))
yangbongsoo commented 1 year ago
import keyword

# TODO: 2장 데이터
# TODO: 실수의 두 가지 표현방식 4page
# 고정 소수점 방식 : 132.234, -0.023 같이 소수점을 고정하여 표시하는 방법
# 부동 소수점 방식 : 1.53e+5(= 1.53 * 10^5), 3.5e-64(= 3.5 * 10^-64) 같이 지수형으로 표시하는 방법

# TODO: 변수명 규칙 시험에 나옴. 2장 데이터 pdf 12,13page
# 변수명은 영어 대소문자, 숫자, 밑줄(_) 로만 이뤄진다. ex) Money$ : 문자 $ 사용 못함
# 변수명은 영어 대소문자 또는 밑줄로만 시작 ex) 7up, 5brothers : 숫자로 시작 못함
# 파이썬 지정단어들은 변수명으로 사용 불가
# 파이썬에서는 대소문자 구분한다. ex) hour 와 Hour 는 다른 변수다

# 2nd_base : 숫자로 시작 할 수 없다.
# #money : # 문자 기호 사용 못함
# varname$ : $ 특수 문자 사용 못함
# id name : 중간에 공백 문자 사용 못함
# for : 예약어 for 를 변수명으로 사용 못함 # print(keyword.kwlist)

x = 15
print(type(x))  # <class 'int'> 타입 이름 기억해라
x = 2.5
print(type(x))  # <class 'float'>
x = "Hello"
print(type(x))  # <class 'str'> string이 아니라 str 이다.

# swap
a = 10
b = 20

a, b = b, a
# print("a : ", a)
# print("b : ", b)

# TODO: 3장 연산자
# 파이썬은 나누기하면 항상 실수로 나옴 (중요)
# ex) 1/2 = 0.5
# ex) 3 // 2 = 1 나눈 후 몫

# 복합 연산자 3장 연산자 pdf(p3) 시험에 나옴
# x+=y 의 의미는? 답 x = x+y

# Round 함수 출제 - 몇 자리인지
# 반올림하는데 소수점 이하 4자리까지 보존함. 5번째에서 반올림 수행
print(round(3.123456, 4))  # 결과 : 3.1235
print(round(3.123456))  # 자릿수 지정안하면 정수 반환. 출력 결과 : 3

# 17 을 4로 나눈 몫과 나머지를 같이 반환
a, b = divmod(17, 4)
print(a, b)

# 가장 상단의 빈칸 채우시오 형태 * Math 모듈 임포트 p5
# from math import * # : 이 경우 모듈 이름이 불필요
# a = sqrt(2.0) # : sqrt() 함수를 함수명으로만 호출
# import math : 이 경우 math. 를 붙여야함
# a = math.sqrt(2.0) : sqrt() 함수 앞에 해당 모듈명을 명시해야함

# import math as m # : 이 경우 m. 을 붙여야함
# a = m.sqrt(2.0) # : m 은 math 의 별칭에 해당

# math 모듈 중 trunc() 함수 출제
# trunc() 함수 : 인수로 받은 값의 버림 계산 ex) math.trunc(1.5) == 1

# 연산자 %, // 구분해야 함

# TODO: 4장 문자열
# 문자열 문제 작은 따옴표 3개 - 예) ‘Hello!” 를 출력하라
print("'Hello!\"")
print('\'Hello!"')
# 이거 시험에 나온다. 백슬래시 활용
# print("the law' requirements")
# print('the law\' requirements')
# print("\"Hi! Good morning?\"")

# string * 연산자. 곱하기가 아니다. 반복 operator 다
# print("=" * 10)

# in 연산자
# print("Sog" in "Sogang University")  # 대소문자 다르면 다르게 판단
# print("YBS" not in "Sogang University")

# 문자열 포매팅 관련 2문제 출제 - 예) 8.3f 의 경우 어떤 형태로 출력되는지
# TODO: 시험에 나옴 e+02 에서 0이 붙은거는 외워라.
print("{:8.3f}".format(3.141592))
print("|{:8.3e}|".format(314.15926))  # 소숫점이하 3 자리 지수 (8자리) |3.142e+02|
print("|{:9.2e}|".format(314.15926))  #
print("|{:010,d}|".format(12345))  # space bar 대신 0 을 넣는다. 총10개 문자 사용하라(쉼표도 문자에 포함)
print("average = %10.2f" % 12345678.923)  # 총 10개가 넘어가도 짜르지 않고 출력된다.

# replace() 함수 문제 - 예) Hi 를 Hello 로 바꿔 반환
s = "Hi everybody!"
s1 = s.replace("Hi", "Hello")
print(s1)

# TODO: 5장 입출력
# n1, n2, n3 = input("Enter two names :").split() # n3 에러나옴 : ValueError: not enough values to unpack
# print(n1, n2)

# end 인자: end=’#’
# print 줄바꿈이 필요없는 경우 end 인자 설정을 바꾼다(디폴트로 출력 문자열 마지막에 \n 더해짐 그래서 줄바꿈 발생)
# 줄바꿈 대신 end 인자값으로 채워진다.
print("First Person.", end='')
print("Second Person.")
print("First Person.", end='#')
print("Second Person.")

# TODO: 6장 조건문
# 윤년 조건문 시험에 나올 수 있음
year = 2022
if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):
    print("윤년")
else:
    print("윤년 아님")