Language/Python

[Python] 문제

S_sun 2024. 5. 13. 20:45

1. 소수 구별

  • 프로그래머 X는 입력값을 숫자를 입력하거나 문자를 입력하려고 하는데,
  • 만약 숫자를 입력하였으면 그것이 정수인지, 소수인지 구별하는 프로그램을 짜보도록 하고,
  • 만약 문자를 입력하였으면 숫자가 아니므로 math error를 표시하게 하라.

<방법 1>

input = 6
rst_num = 0

try:
    # 입력받은 값을 정수화 시킨다. => 정수화가 안될 시 except
    input_num = int(input)
    # 1은 소수가 아니다.
    if (input_num == 1):
        print("입력받은 값은 소수가 아닙니다.")
    else:
        for n in range(2,input_num):  # 소수는 1과 나 자신 외의 값, 다른 값으로 나누어지면 안된다. (2 ~ n-1)의 값으로 나누어 지면 안된다.
            if (input_num % n == 0):  # 나누어 떨어지면 rst_num 값을 올린다.
                rst_num += 1
                break
        if (rst_num == 0):  # 위에서 저장한 rst_num의 값이 0이면 소수이다.
            print("입력받은 값은 소수입니다.")
        else:
            print("입력받은 값은 소수가 아닙니다.")
except Exception as e:
    print("math error")

 

<방법 2>

try:
    input_value = input("숫자를 입력하세요 : ")

    input_value = int(input_value)
    if (input_value == 1 or input_value == 2):
        print("입력받은 값은 소수가 아닙니다.")
    for n in range(2,input_value):
        if (input_value % n == 0):
            print("입력받은 숫자는 소수가 아닙니다.")
            break
    else:
        print("입력받은 숫자는 소수입니다.")
except:
    print("math error")

 

<방법 3>

is_decimal = True  # 초기값 설정 => 소수가 True라고 정의
    
try:
    answer = input("숫자를 입력해주세요: ")  # 입력받은 수는 type은 str이다.

    answer = int(answer)
    for i in range(2, answer):  # 2부터 입력받은 수 까지 (입력받은 수는 미포함)
        # x가 해당 수로 나누어떨어진다면
        if answer % i == 0:  # 소수는 나누어 떨어지면 안된다.
            print("소수가 아닙니다.")
            is_decimal = False  # 입력값이 소수가 아니라는 뜻
            break

    if is_decimal:
      print("소수입니다.")
except:  # int로 형변환이 되지 않을 경우 exception (answer = int(answer))
    print("math error")

 

<방법 4>

try:
  answer = input("숫자를 입력해주세요: ")
  answer = int(answer)
  assert answer >= 2 # 입력 숫자가 1이하인경우 오류로 발생!!

  for i in range(2, answer):
      if answer % i == 0:
        print("소수가 아닙니다.")
        break
  else:
    print("소수입니다.")
except:
    print("math error")

 

2. 최대값, 최소값, 중간값 출력

  • ex) [8, 6, 2, 8, 5, 1, 2, 5, 4, 9]
  • 최소값 : 1 / 최대값 : 9 / 중간값 : 5

<방법 1>

answer = [8, 6, 2, 8, 5, 1, 2, 5, 4, 9]
min = 0
max = 0
mid = 0

# 중복값 제거
answer_set = set(answer)
# 정렬
answer_sort = sorted(answer_set)
print(answer_sort)

# 최소값, 최대값, 중간값 
min = answer_sort[0]
max = answer_sort[-1]
mid_value = int(len(answer_sort) / 2)
mid = answer_sort[mid_value]

print(f"최소값 : {min} / 최대값 : {max} / 중간값 : {mid}")

 

<방법 2>

import random
    
# random으로 0 ~ 9 사이의 정수를 뽑는다.
# for _ => 변수를 사용하지 않을 경우 _ 사용
lst = [ random.randint(0,9) for _ in range(10)]
'''
for i in range(10):
    lst.append(random.randint(0, 9))
'''
print(f'before lst: {lst}')
random.shuffle(lst)  # 섞다.
lst.sort() # 정렬
print(f'after lst: {lst}')

median = (len(lst) -1) / 2  # median의 index 값
minimum = lst[0]
maximum = lst[-1]

print(f'최소값: {minimum} / 최대값: {maximum} / 중간값: {lst[int(median)]}')

 

3. 방탈출 게임

<방법 1>

import random
    
password = str(random.randint(0,9)) + str(random.randint(0,9)) + str(random.randint(0,9))

is_pass = True

while is_pass:
    input_value = input("비밀번호를 입력해주세요. : ")
    if len(input_value) != 3:
        print("비밀번호는 3자리 입니다.")
    elif not input_value.isdigit():
        print("숫자만 입력해주세요.")
    elif input_value == password:
        print("성공!")
    else:
        print("틀림")

 

<방법 2>

import random

password = str(random.randint(0,9)) + str(random.randint(0,9)) + str(random.randint(0,9))
print(password)

while True:
  # 입력해주세요:
  answer = input("입력해주세요: ")

  # 입력값 검증
  if len(answer) != 3:
      print("비밀번호 길이가 틀립니다.")
  elif not answer.isdigit():
      print("숫자만 입력해주세요.")

  # 정답 비교
  elif answer == password:
      print('성공')
      break
  else:
      print('틀림')

 

4. 가위바위보 게임

<방법 1>

import random
	
games = ["가위", "바위", "보"]

user_input = input("가위바위보 중 하나만 입력해 주세요.")
computer_rst = random.choice(games)
pass_rst = True

# 사용자 입력 체크 확인
if user_input not in games:
    print("잘못입력하였습니다. 가위,바위,보 중 하나만 입력해 주세요.")
elif user_input == computer_rst:
    print(f"결과 : 무승부, 컴퓨터 : {computer_rst}")
elif user_input == "가위":
    if computer_rst == "보":
        print(f"사용자 승, 컴퓨터 : {computer_rst}")
    else:
        print(f"컴퓨터 승, 컴퓨터 : {computer_rst}")
elif user_input == "바위":
    if computer_rst == "가위":
        print(f"사용자 승, 컴퓨터 : {computer_rst}")
    else:
        print(f"컴퓨터 승, 컴퓨터 : {computer_rst}")
elif user_input == "보":
    if computer_rst == "바위":
        print(f"사용자 승, 컴퓨터 : {computer_rst}")
    else:
        print(f"컴퓨터 승, 컴퓨터 : {computer_rst}")

 

<방법 2>

import random
	
가위바위보게임 = {
    '가위': {
        '바위':'패',
        '보':'승'
    },
    '바위': {
        '가위':'승',
        '보':'패'
    },
    '보': {
        '바위':'승',
        '가위':'패'
    }
}

가위바위보 = ['가위', '바위', '보']
컴퓨터 = random.choice(가위바위보)

answer = input("가위바위보 중 하나를 입력해주세요: ")
answer = answer.replace(' ','')
if answer not in 가위바위보:
    print("잘못입력하였습니다.")
elif answer == 컴퓨터:
    print("무승부입니다.")
else:
    print(가위바위보게임[answer][컴퓨터])

print(f'컴퓨터: {컴퓨터}')
728x90
반응형

'Language > Python' 카테고리의 다른 글

[Python] 클래스 (class)  (0) 2024.05.13
[Python] 함수 (Function)  (0) 2024.05.13
[Python] 제어문 & 오류 & 예외처리  (0) 2024.05.13
[Python] 자료구조  (0) 2024.05.13
[Python] 문법  (0) 2024.05.13