[Python기초]if, else, elif 연습2

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!


파이썬 if, else, elif문 연습문제 2


문제1: 16진수 글자 하나를 입력해 16진수인지 아닌지를 구분하자


10진수는 일반적으로 우리가 사용하는 수 계산법이다.
컴퓨터에서는 이진수(bin), 십진수, 8진수(octa), 16진수(hexa) 등 다양하게 사용한다.
16진수는 0~9까지 사용하는 10진수와 다르게 0~9를 포함한 a~f까지 사용해 10~15를 표현한다.
0b1111(이진수 15) 는 0x0001(16진수 15)와 같다고 볼 수 있다.
이 지식을 바탕으로 16진수 글자 하나를 입력했을 때 맞으면 10진수로 변환해주고, 아니면 아니라는 것을 알려주는 출력문을 작성문이 나오게 만들어보자.


  • 출력 예시:

py7-1


num  = input('16진수 한 글자 입력 : ')
# 우리는 계속 지겹도록 변수를 받는다..
# 이번에도 역시나 num에 16진수 한 글자를 받도록 하자.
if ('0' <= num and num <= '9') or ('a' <= num  and num <= 'f') or ('A' <= num and num <= 'F'):
    print('10진수 ==> ', int(num, 16))
else:
    print('16진수가 아닙니다.')

# 위에 설명했는데 16진수는 0~15 범위의 숫자를 0~f를 이용한다. 따라서 0~9, a~f, A~F를 이용해 조건을 걸어준다.
# print문의 정수형으로 전환하는 int 함수 안에 두번 째 인자 16은 num을 16진수 -> 10진수 글자로 전환시켜 준다.

이렇게 변수에 조건식과 정수형 변환을 통해 16진수 한 글자를 구분할 수 있다. 자 이제 0~9, a~f, A~F 등 다양하게 입력해보자.

    16진수 한 글자 입력 : c
    10진수 ==>  12
    16진수 한 글자 입력 : A
    10진수 ==>  10
    16진수 한 글자 입력 : h
    16진수가 아닙니다.

근데.. 다양하게 적다보니 굳이 한 글자가 아니여도 다 잘 출력된다.

    16진수 한 글자 입력 : af
    10진수 ==>  175







문제2: 가지고 있는 돈을 최대한 큰 잔돈으로 바꿔보자


5만원권 부터 10원짜리 동전까지, 내가 계좌에 가진 돈을 최대한 가볍게 인출해보자!
리스트와 for문을 사용하면 쉽게 문제를 해결할 수 있을 것 같다.


  • 출력 예시: py7-2
deposit = int(input('교환할 돈은 얼마 ? '))
# 내 계좌에 있는 예금을 deposit에 입력해준다.
# input을 사용하면 간단히 해결할 수 있다.
changes = [50000, 10000, 5000, 1000, 500, 100, 50, 10]

# 인출할 화폐의 종류다. 5만원권, 만원권, 5천원권, 천원권, 500원부터 10원짜리 동전...
# changes 라는 리스트에 저장해준 이유는 잠시 후 for문에서 list를 활용하면 간단하게 명령문을 작성할 수 있다. 
cm = []
# cm은 바꾸고 난 뒤 각 화폐의 개수를 담을 리스트다.
for i in changes:
    cm.append(deposit//i)
    deposit = deposit % i

# 반복적인 작업을 할 범위에 changes라는 리스트를 넣는다.
# .append()는 리스트에 요소를 추가해주는 메소드(method)로 반복문마다 새로이 리스트의 마지막에 저장이 된다.
# 입력받은 deposit값을 changes의 각 요소로 나눠 몫을 구하는 것이 (deposit//i)이다. 
# ex)deposit//50000 ... deposit//10

# 몫을 구했다면 남은 %연산자를 활용해 나머지를 구하고 다시 deposit에 저장해준다.
print(cm)

# cm에 값들이 잘 저장 되있는지 확인해주는 것도 좋다.
print('50000원 {}장, 10000원 {}장, 5000원 {}장, 1000원 {}장, '
      '500원 {}개, 100원 {}개, 50원 {}개, 10원 {}개 '.format(cm[0],cm[1],cm[2],cm[3],cm[4],cm[5],cm[6],cm[7]))
print(f'바꾸지 못한 돈 ==> {deposit}')

# 이제 포매팅을 이용해 입력받은 예금으로 각 화폐로 몇 개씩 바꿨는지, 그리고 잔돈은 얼마나 남았는지 출력해준다.
# 바꾼 각 화폐의 개수는 cm에 순차적으로 저장되었고, cm[n]을 이용해 인덱스해준다.

전세 자금이라도 있으면 좋겠다는 마음으로
예금이 123,456,789원이라 생각하고 입력해보겠다.

    교환할 돈은 얼마 ? 123456789
    50000원 2469장, 10000원 0장, 5000원 1장, 1000원 1장, 500원 1개, 100원 2개, 50원 1개, 10원 3개 
바꾸지 못한 돈 ==> 9







문제3: 주사위를 던져 높으면 Win!


A와 B 두 사람이 주사위를 던져 높은 숫자가 나온 사람이 이기는 게임이며, 결과는 이기거나 비기거나 지는 것이다.
random 모듈을 이용해 무작위로 숫자를 호출해서 비교하여 승부를 결정지어보자.


  • 출력 예시: py7-3
from random import randint

# 우선 이 문제를 풀기위해서 파이썬 내장함수인 randint함수를 random모듈에서 꺼내와 설치해줘야 한다.
dice1 = (randint(1, 6))
dice2 = (randint(1, 6))

# randint(x,y)함수는 x부터 y까지의 정수를 랜덤하게 추출해준다. 
# 1부터 6까지 정수 중 무작위로 하나를 주사위1, 주사위2에 저장해준다.
cm = []
# cm은 바꾸고 난 뒤 각 화폐의 개수를 담을 리스트다.
print('A의 주사위 숫자는 {} 입니다.'.format(dice1))
print('B의 주사위 숫자는 {} 입니다.'.format(dice2))

# 각 주사위의 숫자가 무엇인지 출력해준다.
if dice1 == dice2:
    print('비겼다.')
elif dice1 > dice2:
    print('A가 이겼다.')
else:
    print('B가 이겼다.')

# if 조건문을 사용해 두 개의 주사위가 같은 숫자면 '비겼다.'를 출력.
# elif, else를 활용해 높은 주사위가 이겼다고 나오게 출력한다.

잘 실행되나 여러번 확인해주자.

    A의 주사위 숫자는 4 입니다.
    B의 주사위 숫자는 4 입니다.
    비겼다.
    A의 주사위 숫자는 2 입니다.
    B의 주사위 숫자는 5 입니다.
    B가 이겼다.

2022

[web]jQuery 복습 3

2 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 2

11 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 1

16 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리4

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리3

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리2

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리1

7 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]CSS 기초 정리

9 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]HTML 기초 정리

2 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[Pandas]pandas 연습

3 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑

2021

[Python기초]module

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑