4.python을 이용한 알고리즘 문제(1~30)

23 minute read

1. 산술연산자[문제]

# ex04_문제.py

# 예) 현금을 1000원 갖고 있다.
#     200원짜리 과자를 구매하면 잔돈은 얼마일까?

print(1000 - 200)
print("잔돈 =", 1000-200, "원")
print("잔돈 = %d원" % (1000 - 200))

# 문제 1) 월급이 100원이다. 연봉은? (조건 : 세금 10% 제외)
# 문제 2) 시험점수를 30, 50, 4점 을 받았다. 평균은?
# 문제 3) 가로가 3이고 세로가 6인 삼각형 넓이 출력
# 문제 4) 100초를 1분 40초로 출력
# 문제 5) 800원에서 500원짜리 개수 , 100원짜리 개수 출력

정답

# 문제 1) 월급이 100원이다. 연봉은? (조건 : 세금 10% 제외)
print(100 * 12 * 0.9)

# 문제 2) 시험점수를 30, 50, 4점 을 받았다. 평균은?
print((30 + 50 + 4) / 3)

# 문제 3) 가로가 3이고 세로가 6인 삼각형 넓이 출력
print(3 * 6 / 2)

# 문제 4) 100초를 1분 40초로 출력
print(100//60, 100%60)

# 문제 5) 800원에서 500원짜리 개수, 100원짜리 개수 출력
print(800//500)
print(800%500//100)

2. 변수[문제]

# ex06_문제.py

# 예) 현금이 1000원있다. 200원짜리 과자 구입 후, 잔돈 출력
현금 = 1000
과자 = 200
잔돈 = 현금 - 과자
print(잔돈)

# 문제 1) 월급이 100원이다. 연봉은? (조건 : 세금 10% 제외)

# 문제 2) 시험점수를 30, 50, 4점 을 받았다. 평균은?

# 문제 3) 가로가 3이고 세로가 6인 삼각형 넓이 출력

# 문제 4) 100초를 1분 40초로 출력

# 문제 5) 800원에서 500원짜리 개수 ,100원짜리 개수
# 정답 5) 500원(1개), 100원(3개)

정답

# ex06_정답.py

# 예) 현금이 1000원있다. 200원짜리 과자 구입 후, 잔돈 출력
현금 = 1000
과자 = 200
잔돈 = 현금 - 과자
print(잔돈)

# 문제 1) 월급이 100원이다. 연봉은? (조건 : 세금 10% 제외)
월급 = 100
세전연봉 = 월급 * 12
세금 = 세전연봉 * 0.1
세후연봉 = 세전연봉 - 세금
print(세후연봉)

# 문제 2) 시험점수를 30, 50, 4점 을 받았다. 평균은?
국어 = 30
수학 = 50
영어 = 4
총점 = 국어 + 수학 + 영어
평균 = 총점 / 3
print(평균)

# 문제 3) 가로가 3이고 세로가 6인 삼각형 넓이 출력
가로 = 3
세로 = 6
삼각형넓이 = 가로 * 세로 / 2
print(삼각형넓이)

# 문제 4) 100초를 1분 40초로 출력
시간 = 100
 = 시간 // 60
 = 시간 % 60
print(, )

# 문제 5) 800원에서 500원짜리 개수 ,100원짜리 개수
# 정답 5) 500원(1개), 100원(3개)
 = 800
오백원 =  // 500
일백원 =  % 500 // 100
print(오백원, 일백원)

3. 값 교체하기[문제]

# ex08_문제.py

# 값 교체하기

# 두 수의 값을 교체해 보자.

x = 10
y = 20

print("x =", x)   # 20
print("y =", y)   # 10

정답

# ex08_정답.py

# 값 교체하기

# 두 수의 값을 교체해 보자.

x = 10
y = 20

z = x             # z = 10
x = y             # x = 20
y = z             # y = 10

print("x =", x)   # 20
print("y =", y)   # 10

주의사항 및 tip

코드는 순서대로 작동하므로, x에 y의 값이 담기므로 x는 이미 바뀐상태에서 y에 값을 넣으니까 x,y 두수가 교체되는것이 아닌 두수에 20이 들어간다.

# ex08_정답.py

# 값 교체하기

# 두 수의 값을 교체해 보자.

x = 10
y = 20


x = y
y = x

print("x =", x)   # 20
print("y =", y)   # 20

4. 비교 연산자[문제]

# ex10_문제.py

# 예) 점수가 60점 이상이면 True 출력
score = 30
print(score >= 60)

# 문제 1) 3의 배수이면 True 출력
# 힌트 1) 숫자 % 3 == 0 (3의 배수)
num = 15

# 문제 2) 짝수이면 True 출력
# 힌트 2) 숫자 % 2 == 0 (짝수)
# 힌트 2) 숫자 % 2 == 1 (홀수)
num = 22

정답

# ex10_정답.py

# 예) 점수가 60점 이상이면 True 출력
score = 30
print(score >= 60)

# 문제 1) 3의 배수이면 True 출력
# 힌트 1) 숫자 % 3 == 0 (3의 배수)
num = 15
print(num % 3 == 0)

# 문제 2) 짝수이면 True 출력
# 힌트 2) 숫자 % 2 == 0 (짝수)
# 힌트 2) 숫자 % 2 == 1 (홀수)
num = 22
print(num % 2 == 0)

5. 논리 연산자[문제]

# ex12_문제.py

# 예) 3의 배수이면서, 짝수이면 True 출력
num = 12
print(num % 3 == 0 and num % 2 == 0)

# 문제 1) 과락
# 3과목의 평균이 60점 이상이면, True
# 단, 어느 한 과목이라도 50점 미만이면, False
kor = 100
eng = 87
math = 41

# 문제 2) 키가 200cm이상이거나 몸무게가 200kg 이상이면, 입장(True)
height1 = 199
weight1 = 199

height2 = 200
weight2 = 68

정답

# ex12_정답.py

# 예) 3의 배수이면서, 짝수이면 True 출력
num = 12
print(num % 3 == 0 and num % 2 == 0)

# 문제 1) 과락
# 3과목의 평균이 60점 이상이면, True
# 단, 어느 한 과목이라도 50점 미만이면, False
kor = 100
eng = 87
math = 41

total = kor + eng + math
avg = total / 3

print(avg >= 60 and kor >= 50 and eng >= 50 and math >= 50)

# 문제 2) 키가 200cm이상이거나 몸무게가 200kg 이상이면, 입장(True)
height1 = 199
weight1 = 199
print(height1 >= 200 or weight1 >= 200)

height2 = 200
weight2 = 68
print(height2 >= 200 or weight2 >= 200)

주의사항 및 tip 및 Tip

1. and 는 어느 하나라도 false인 경우 false이며, A and B 중에 A가 false일 경우 B는 연산하지 않고 false 결과를 낸다.

2. 마찬가지로 or 역시 A or B 중에 A가 true이면 B는 연산하지 않고 true의 결과를 낸다.

**3. Heavy한 즉 연산이 많은 함수같은것을 맨 앞에두게 되면 true 인지 false인지 판단하는데 시간이 오래걸리게 되므로 따라서 **함수나 연산이 복잡한것들은 맨 뒤에 배치해놓는게 좋다.**

6. 입력받기[문제]

# ex14_문제.py

# 문제 1) 숫자 2개를 입력받아, 합 출력

# 문제 2) 숫자 1개를 입력받아, 홀수이면 True 출력

# 문제 3) 성적을 입력받아, 60점 이상이고 100점 이하이면 True 출력

정답

# ex14_정답.py

# 문제 1) 숫자 2개를 입력받아, 합 출력
x = int(input("숫자1 입력 : "))
y = int(input("숫자2 입력 : "))

print("두 수의 합 =", (x + y))

# 문제 2) 숫자 1개를 입력받아, 홀수이면 True 출력
num = int(input("숫자 입력 : "))
print(num % 2 == 1)

# 문제 3) 성적을 입력받아, 60점 이상이고 100점 이하이면 True 출력
score = int(input("성적 입력 : "))
print(60 <= score and score <= 100)

주의사항 및 tip

  • input()의 return 값은 string이다. 따라서 숫자를 입력받아도 문자로 해석하기 때문에 int()함수를 이용해 문자를 숫자로 바꿔줘야한다.
  • 또한 input함수 안의 값은 같은 data type 이어야한다.

number = input()
# 3
number2 = input()
# 5

print(number + number2)
# 8(x) , 35(o)

7. Up & Down 게임(1단계)[문제]

# ex16_문제.py

# Up & Down 게임[1단계]
# 1. com은 8이다.
# 2. me는 com의 숫자를 맞추는 게임이다.
# 3. 다음과 같은 메세지를 출력한다.
# 1) me < com   : Up!
# 2) me == com  : Bingo!
# 3) me > com   : Down!

com = 8

정답

com = 8

me = int(input("숫자를 입력하세요 : "))

if me < com:
    print("Up!")
if me == com:
    print("Bingo!")
if me > com:
    print("Down!")

주의사항 및 tip

  • input의 return 값은 String이기 때문에 , 숫자로 사용하려면 int()를 써서 문자를 숫자로 바꿔줘야한다.

  • if문을 만들때 반드시 들여쓰기를 해야하며, (:)가 없이 작성하니 SyntaxError: invalid syntax(문법) 가 발생했다.

8. 가위바위보 게임(1단계)[문제]

# ex17_문제.py

# 가위(0) 바위(1) 보(2) 게임[1단계]
# 1. com은 바위(1)만 낼 수 있다.
# 2. me는 0~2 사이의 숫자를 입력한다.
# 3. com과 me를 비교해,
# 1) 비겼다.
# 2) 내가 이겼다.
# 3) 내가 졌다.         를 출력한다.

com = 1

정답

com = 1

me = int(input("가위(0),바위(1),보(2) 입력 : "))

if com == me:
    print("비겼다.")
if me == 0:
    print("내가 졌다.")
if me == 2:
    print("내가 이겼다.")

9. 로그인(1단계)[문제]

# ex18_문제.py

# 로그인[1단계]
# 1. ID와 PW를 입력받는다.
# 2. 입력받은 데이터와 db데이터를 비교해 로그인을 처리한다.
# 예) 로그인 성공 or 로그인 실패

정답

# ex18_정답.py

# 로그인[1단계]
# 1. ID와 PW를 입력받는다.
# 2. 입력받은 데이터와 db데이터를 비교해 로그인을 처리한다.
# 예) 로그인 성공 or 로그인 실패

db_id = 1234
db_pw = 1111

my_id = int(input("ID를 입력하세요 : "))
my_pw = int(input("PW를 입력하세요 : "))

if db_id == my_id and db_pw == my_pw:
    print("로그인 성공")
if db_id != my_id or db_pw != my_pw:
    print("로그인 실패")

db_id = 1234
db_pw = 1111

my_id = int(input("ID를 입력하세요 : "))
my_pw = int(input("PW를 입력하세요 : "))

if id == db_id and pw == db_pw:
  print("로그인성공")
else:
  print("로그인실패")

10. 로그인(2단계)[문제]

# ex19_문제.py

# 로그인[2단계]
# 1. ID와 PW를 입력받아 회원가입을 진행한다.
# 2. 이후 로그인을 위해 다시 ID와 PW를 입력받는다.
# 3. 가입 후 저장된 데이터와 로그인 시 입력받은 데이터를 비교한다.
# 예) 로그인 성공 or 로그인 실패

db_id = 0
db_pw = 0

정답

# ex19_정답.py

# 로그인[2단계]
# 1. ID와 PW를 입력받아 회원가입을 진행한다.
# 2. 이후 로그인을 위해 다시 ID와 PW를 입력받는다.
# 3. 가입 후 저장된 데이터와 로그인 시 입력받은 데이터를 비교한다.
# 예) 로그인 성공 or 로그인 실패

db_id = 0
db_pw = 0

print("=== 회원가입 ===")
db_id = int(input("(가입)ID를 입력하세요 : "))
db_pw = int(input("(가입)PW를 입력하세요 : "))
print("가입을 축하합니다.")

print("=== 로그인 ===")
my_id = int(input("(로그인)ID를 입력하세요 : "))
my_pw = int(input("(로그인)PW를 입력하세요 : "))

if db_id == my_id and db_pw == my_pw:
    print("로그인 성공")
if db_id != my_id or db_pw != my_pw:
    print("로그인 실패")

11. 구구단(1단계)[문제]

# 구구단 게임[1단계]
# 1. 구구단 문제를 출제하기 위해 숫자를 2개 입력받는다.
# 2. 입력받은 숫자를 토대로 구구단 문제를 출제한다.
# 예) 3 x 7 = ?
# 3. 문제에 해당하는 정답을 입력받는다.
# 4. 정답을 비교해 "정답" 또는 "땡"을 출력한다.

정답


x = int(input("숫자1 입력 : "))
y = int(input("숫자2 입력 : "))

answer = x * y

print(x, "X", y, "= ?")
my_answer = int(input("정답을 입력하세요 : "))

if answer == my_answer:
    print("정답")
if answer != my_answer:
    print("땡")

number_one = int(input())
number_two = int(input())

print(f"예) {number_one}*{number_two} = ?")

answer = int(input())



if answer == (number_one*number_two):
  print("정답")
else:
  print("떙")

주의사항 및 tip

  • print() 안에서는 문자열인 “예) 3 x 7 = ?” 를 쓰려면 어떻게 할까

  • 첫번재, format을 사용하는 방법

print(f"예) {number_one}*{number_two} = ?")
  • 두번째, 콤마(,)를 이용하는 방법, 콤마를 이용하는 방법은 데이터 타입이 달라도 상관없다.
print(x, "X", y, "= ?")
  • 세번째, % 를 이용하는 방법
print("%d X %d =?" %(x,y))
  • 네번째, concat 을 이용하는 방법
print(str(x)+"X"+str(y)+"=?")
  • 다섯번째, concat을 이용하는 방법 : 잘못된 방법
print(x+"X"+y+"=?")

다섯번째가 안되는 이유는 “To print, the data type must be the same.” 즉 concat을 통해 print를 하기 위해서는 데이터의 타입이 무조건 같아야하기 때문이다.

12. 유효성 검사[문제]

# ex21_문제.py

# 성적 유효성 검사
# 1. 성적을 입력받는다.
# 2. 성적이 60점 이상이면, 합격. 60점 미만이면 불합격이다.
# 3. 단, 입력받은 성적이
#    음수이거나 100점을 초과하면, 예외 메세지를 출력한다.
#    예) 성적을 잘못 입력했습니다.

정답

score = int(input("성적을 입력하세요 : "))

if 60 <= score and score <= 100:
    print("합격")
if 0 <= score and score < 60:
    print("불합격")
if 100 < score or score < 0:
    print("성적을 잘못 입력했습니다.")

score = int(input())

if score>100:
  print("성적을 잘못입력했습니다.")
else:
  if score>=60:
     print("합격")
  else:
     print("불합격")

13. 놀이기구 이용제한[문제]

# ex22_문제.py

# 놀이기구 이용제한
# 1. 키를 입력받는다.
# 2. 입력받은 키가 120 이상이면, 놀이기구를 이용할 수 있다.
# 3. 키가 120 미만이면, 놀이기구를 이용할 수 없다.
# 4. 단, 부모님과 함께 온 경우 놀이기구 이용이 가능하다.
#    예) 부모님과 함께 오셨나요?(yes:1, no:0)

정답

height = int(input("키를 입력하세요 : "))

if height >= 120:
    print("놀이기구를 이용할 수 있습니다.")
if height < 120:
    answer = int(input("부모님과 함께 오셨나요?(yes:1, no:0)"))

    if answer == 1:
        print("놀이기구를 이용할 수 있습니다.")
    if answer == 0:
        print("놀이기구를 이용할 수 없습니다.")

height = int(input("키가 몇cm 입니까?"))

if height >=120:
  print("놀이기구 이용이 가능합니다.")
else:
  parent = int(input("부모님과 함께 왔나요?"))
  if parent:
    print("놀이기구 이용이 가능합니다.")
  else:
    print("놀이기구 이용이 불가능합니다.")

14. 로그인(3단계)[문제]

# ex23_문제.py

# 로그인[3단계]
# 1. Id를 입력받아 dbId와 일치할 경우에만 Pw를 입력할 수 있다.
# 2. Id가 틀린 경우, "Id를 확인해주세요"라는 메세지를 출력한다.
# 3. Pw가 틀린 경우, "Pw를 확인해주세요"라는 메세지를 출력한다.
# 4. Id와 Pw와 모두 일치하는 경우, "로그인 성공"라는 메세지를 출력한다.

db_id = 1234
db_pw = 1111

정답

db_id = 1234
db_pw = 1111


my_id = int(input("ID를 입력해주세요"))

if my_id != db_id:
  print("ID를 확인해주세요")

if my_id == db_id:
  my_pw = int(input("PW를 입력해주세요"))

  if my_pw != db_pw:
    input("PW를 확인해주세요")

  if my_pw ==db_pw:
    input("로그인성공")
db_id = 1234
db_pw = 1111


my_id = int(input("ID를 입력해주세요"))

if my_id == db_id :
  my_pw = int(input("PW를 입력해주세요"))

  if my_pw == db_pw:
    print("로그인성공")
  else:
    print("PW를 확인해주세요")
else :
  print("ID를 확인해주세요")

15. 영수증 출력(1단계)[문제]

# ex24_문제.py

# 영수증 출력[1단계]
# 1. 메뉴판을 출력한다.
# 2. 사용자는 주문하고자 하는 메뉴의 번호를 입력한다.
# 3. 현금을 입력받는다.
# 4. 입력받은 현금과 메뉴가격을 확인해, 영수증을 출력한다.
# 5. 단, 현금이 부족한 경우 "현금이 부족합니다."라는 메세지를 출력한다.

price1 = 8700
price2 = 6200
price3 = 1500

print("=== 롯데리아 ===")
print("1. 불고기 버거 :", price1, "원")
print("2. 새우   버거 :", price2, "원")
print("3. 콜       라 :", price3, "원")

정답

price1 = 8700
price2 = 6200
price3 = 1500

print("=== 롯데리아 ===")
print("1. 불고기 버거 :", price1, "원")
print("2. 새우   버거 :", price2, "원")
print("3. 콜       라 :", price3, "원")

choice = int(input("메뉴를 선택하세요 : "))

money = int(input("현금을 입력하세요 : "))

charge = 0
if choice == 1:
    charge = money - price1
if choice == 2:
    charge = money - price2
if choice == 3:
    charge = money - price3

if charge >= 0:
    print("잔돈 =", charge)
if charge < 0:
    print("현금이 부족합니다.")

16. 최대값 구하기(1단계)[문제]

# ex25_문제.py

# 최대값 구하기[1단계]
# 1. 숫자 3개를 입력받는다.
# 2. 입력받은 3개의 수를 비교하여,
# 3. 가장 큰 수(MAX)를 출력한다.

정답

# ex25_정답.py

# 최대값 구하기[1단계]
# 1. 숫자 3개를 입력받는다.
# 2. 입력받은 3개의 수를 비교하여,
# 3. 가장 큰 수(MAX)를 출력한다.

x = int(input("정수1 입력 : "))
y = int(input("정수2 입력 : "))
z = int(input("정수3 입력 : "))

max_num = x
if max_num < y:
    max_num = y
if max_num < z:
    max_num = z

print("최대값 =", max_num)

주의사항 및 tip

우리가 배열의 최대값을 구할때 반복문을 사용하여 최대값을 구했는데, 그것을 풀어서 쓴것이 바로 위의 답이다


list = [30,40,50]

i = 1
max_num = list[0]

while i< len(list) :

    if max_num < list[i] :
        max_num = list[i]
    i+=1

print("최대값 =", max_num)

17. 코인 게임[문제]

# ex27_문제.py

# 코인 게임
# 1. 0 또는 1의 랜덤 숫자를 저장한다.
# 2. 0은 동전의 앞면, 1은 동전의 뒷면이다.
# 3. 동전의 앞뒷면을 맞추는 게임이다.

import random

coin = random.randint(0, 1)

정답

# ex27_정답.py

# 코인 게임
# 1. 0 또는 1의 랜덤 숫자를 저장한다.
# 2. 0은 동전의 앞면, 1은 동전의 뒷면이다.
# 3. 동전의 앞뒷면을 맞추는 게임이다.

import random

coin = random.randint(0, 1)

if coin == 0:
    coin = "앞"
if coin == 1:
    coin = "뒤"

print("치트키 =", coin)

my_coin = input("앞 또는 뒤를 입력 : ")
if coin == my_coin:
    print("정답")
if coin != my_coin:
    print("오답")

# ex28_정답.py

# 당첨복권
# 30%의 당첨확률

import random

r_num = random.randint(1, 10)

if r_num <= 3:
    print("당첨")
if r_num > 3:
    print("꽝")

18. 홀짝게임[문제]

# ex29_문제.py

# 홀짝 게임
# 1. 1~100사이의 랜덤 숫자를 저장한다.
# 2. 저장된 랜덤 숫자를 보여주고,
# 3. 해당 숫자가 홀수인지 짝수인지 맞추는 게임이다.


print("1.홀수")
print("2.짝수")

choice = int(input("번호를 선택하세요 : "))

정답

# ex29_정답.py

# 홀짝 게임
# 1. 1~100사이의 랜덤 숫자를 저장한다.
# 2. 저장된 랜덤 숫자를 보여주고,
# 3. 해당 숫자가 홀수인지 짝수인지 맞추는 게임이다.

import random

r_num = random.randint(1, 100)

answer = 0
if r_num % 2 == 0:
    answer = 2
if r_num % 2 == 1:
    answer = 1

print(r_num)
print("1.홀수")
print("2.짝수")

choice = int(input("번호를 선택하세요 : "))

if answer == choice :
    print("정답")
if answer != choice:
    print("땡")

19. 구구단게임(2단계)[문제]

# ex30_문제.py

# 구구단 게임[2단계]
# 1. 구구단 문제를 출제하기 위해, 숫자 2개를 랜덤하게 저장한다.
# 2. 저장된 숫자를 토대로 구구단 문제를 출력한다.
# 예)	3 x 7 = ?
# 3. 문제에 해당하는 정답을 입력받는다.
# 4. 정답을 비교 "정답" 또는 "땡"을 출력한다.

정답

import random

random_num01 = random.randint(2,9)
random_num02 = random.randint(1,9)

answer = random_num01 * random_num02

print(f"{random_num01} x {random_num02} = ?")

my_answer = int(input())

if answer == my_answer :
  print("정답")

if answer != my_answer :
  print("땡")

20. 가위바위보(2단계)[문제]

# ex31_문제.py

# 가위바위보 게임
# 1. com은 0~2 사이의 랜덤한 숫자를 저장한다.
# 2. me는 0~2 사이의 숫자를 입력받는다.
# 3. com과 me를 비교해,
# 		1) 비겼다.
# 		2) 내가 이겼다.
# 		3) 내가 졌다.	를 출력한다.

정답

if com == me:
    print("비겼다.")
if com == 0 and me == 1:
    print("이겼다.")
if com == 1 and me == 2:
    print("이겼다.")
if com == 2 and me == 0:
    print("이겼다.")
if com == 0 and me == 2:
    print("졌다.")
if com == 1 and me == 0:
    print("졌다.")
if com == 2 and me == 1:
    print("졌다.")

21. ATM(1단계)[문제]

# ex34_문제.py

# ATM[1단계] : 이체하기
# 1. 이체할 계좌번호를 입력받는다.
# 2. 계좌번호가 일치하면,
# 3. 이체할 금액을 입력받는다.
# 4. 이체할 금액 <= myMoney	: 이체가능
# 			myMoney   - 이체할 금액
# 			yourMoney + 이체할 금액
#    이체할 금액  > myMoney 	: 이체불가

my_acc = 1234
my_money = 8700

your_acc = 4321
your_money = 12000

# ex34_정답.py

# ATM[1단계] : 이체하기
# 1. 이체할 계좌번호를 입력받는다.0
# 2. 계좌번호가 일치하면,
# 3. 이체할 금액을 입력받는다.
# 4. 이체할 금액 <= myMoney	: 이체가능
# 			myMoney   - 이체할 금액
# 			yourMoney + 이체할 금액
#    이체할 금액  > myMoney 	: 이체불가

my_acc = 1234
my_money = 8700

your_acc = 4321
your_money = 12000

acc = int(input("이체할 계좌번호를 입력하세요 : "))
if your_acc == acc:
    money = int(input("이체할 금액을 입력하세요 : "))

    if money <= my_money:
        my_money = my_money - money
        your_money = your_money + money
        print("이체를 완료하였습니다.")
    else:
        print("계좌잔액이 부족합니다.")

else:
    print("계좌번호를 확인해주세요.")

print("my_money =", my_money)
print("your_money =", your_money)

22. ATM(2단계)[문제]

# ex35_문제.py

# ATM[2단계] : 이체하기
# 1. 로그인 성공 시, 입금/출금/조회 메뉴가 출력된다.
#    즉 입금/출금/조회는 로그인 후에만 사용이 가능하다.
# 2. 로그인 시, 계좌번호와 비밀번호를 입력받아 처리한다.
# 3. 입금 시, 현금은 감소한다.
# 4. 출금 시, 현금은 증가한다.

cash = 20000            # 현금
balance = 30000         # 계좌잔액

account = 1111          # 계좌번호
password = 1234         # 비밀번호

print("=== MEGA ATM ===")
print("1.로그인")
print("2.종료")

choice = int(input("메뉴를 선택하세요 : "))
if choice == 1:
    pass
elif choice == 2:
    pass

정답

# ex35_정답.py

# ATM[2단계] : 이체하기
# 1. 로그인 성공 시, 입금/출금/조회 메뉴가 출력된다.
#    즉 입금/출금/조회는 로그인 후에만 사용이 가능하다.
# 2. 로그인 시, 계좌번호와 비밀번호를 입력받아 처리한다.
# 3. 입금 시, 현금은 감소한다.
# 4. 출금 시, 현금은 증가한다.

cash = 20000            # 현금
balance = 30000         # 계좌잔액

account = 1111          # 계좌번호
password = 1234         # 비밀번호

print("=== MEGA ATM ===")
print("1.로그인")
print("2.종료")

choice = int(input("메뉴를 선택하세요 : "))
if choice == 1:
    my_acc = int(input("계좌번호를 입력하세요 : "))
    my_pw = int(input("비밀번호를 입력하세요 : "))

    if account == my_acc and password == my_pw:
        print("1) 입금")
        print("2) 출금")
        print("3) 조회")

        select = int(input("메뉴를 선택하세요 : "))
        if select == 1:
            deposit = int(input("입금할 금액을 입력하세요 : "))
            cash = cash - deposit
            balance = balance + deposit
            print("입금을 완료하였습니다.")
        elif select == 2:
            withdraw = int(input("출금할 금액을 입력하세요 : "))
            if withdraw <= balance:
                cash = cash + withdraw
                balance = balance - withdraw
                print("출금을 완료하였습니다.")
            else:
                print("계좌잔액이 부족합니다.")
        elif select == 3:
            print("계좌잔액 =", balance)
    else:
        print("계좌번호와 비밀번호를 확인해주세요.")
elif choice == 2:
    print("이용해 주셔서 감사합니다.")


print("현금 =", cash)
print("계좌잔액 =", balance)

주의사항 및 tip 및 꿀팁

  • pass 는 단순히 실행코드가 없을때 사용한다.

23. 가운데 숫자 맞추기 게임[문제]

# ex36_문제.py

# 가운데 숫자 맞추기 게임
# 1. 150~250 사이의 랜덤 숫자 저장
# 2. 랜덤 숫자의 가운데 숫자를 맞추는 게임이다.
# 예)
# 		249		: 4
# ex36_정답.py

# 가운데 숫자 맞추기 게임
# 1. 150~250 사이의 랜덤 숫자 저장
# 2. 랜덤 숫자의 가운데 숫자를 맞추는 게임이다.
# 예)
# 		249		: 4

import random

r_num = random.randint(150, 250)
answer = r_num % 100 // 10

print("문제 =", r_num)

my_answer = int(input("가운데 숫자 입력 : "))
if my_answer == answer:
    print("정답")
else:
    print("땡")

24. 369 게임(1단계)[문제]

# ex37_문제.py

# 369게임[1단계]
# 1. 1~50 사이의 랜덤 숫자를 저장한다.
# 2. 위 수에 369의 개수가
#   1) 2개이면, 짝짝을 출력
#   2) 1개이면, 짝을 출력
#   3) 0개이면, 해당 숫자를 출력
#   예)
# 		33	 : 짝짝
# 		16	 : 짝
# 		 7	 : 7

정답

import random

r_num = random.randint(1, 50)
print("문제 =", r_num)

x = r_num // 10     # 십의 자리
y = r_num % 10      # 일의 자리

count = 0
if x != 0 and x % 3 == 0:
    count = count + 1
if y != 0 and y % 3 == 0:
    count = count + 1

if count == 2:
    print("짝짝")
elif count == 1:
    print("짝")
else:
    print(r_num)

주의사항 및 tip 및 꿀팁

여기서 주목해야할것은 x!=0 가 y!=0 이다. 한자리수의 몫은 언제나 0 이 나오는데, 0의 나머지 역시 0이므로 count가 될수 있기 때문이다. 만약 x!=0 을 안해줄경우 3같은 경우 짝짝이 나올수 있다.

마찬가지로 30같은 일의자리가 0인경우에 나머지가 언제나 0이 나오는데, 0의 나머지 역시 0이므로 count가 될수 있기 때문에, 만약 30 같은경우 y!=0 을 안해줄경우 짝짝이 나올수 있다.

x = r_num // 10 # 십의 자리 y = r_num % 10 # 일의 자리

if x != 0 and x % 3 == 0:
    count = count + 1
if y != 0 and y % 3 == 0:
    count = count + 1

25. 지하철 요금 계산[문제]

# ex38_문제.py

# 지하철 요금 계산
#  1. 이용할 정거장 수를 입력받는다.
#  2. 다음과 같이 정거장 수에 따라 요금이 정산된다.
#  3. 요금표
#  1) 1~5	: 500원
#  2) 6~10	: 600원
#  3) 11,12 : 650원
#  4) 13,14 : 700원
#  5) 15,16 : 750원
#  ...
  • 정답
# ex38_정답.py

# 지하철 요금 계산
#  1. 이용할 정거장 수를 입력받는다.
#  2. 다음과 같이 정거장 수에 따라 요금이 정산된다.
#  3. 요금표
#  1) 1~5	: 500원
#  2) 6~10	: 600원
#  3) 11,12 : 650원
#  4) 13,14 : 700원
#  5) 15,16 : 750원
#  ...

station = int(input("정거장 수를 입력하세요 : "))

fee = 0
if 1 <= station and station <= 5:
    fee = 500
elif 6 <= station and station <= 10:
    fee = 600
elif station > 10:
    fee = 600 # 10정거장 요금 미리 계산
    add = (station - 10) # 총 정거장에서 10을 뺀 나머지 정거장수

    if add % 2 == 1:  # 홀수일때는 짝수로 만들어준다.(2정거장마다이니간 홀수는 짝수로 보정)
        add = add + 1  # 예 3 ==> 4

    addfee = add // 2 * 50  # 4 // 2 * 50 ==> 100

    fee = fee + addfee  # 600 + 100 ==> 700


print("요금 =", fee)

  • 주의사항 및 tip : 문제에서 16번째 까지가 아닌 그 이후까지의 금액도 나타내야하는걸 놓치지 말자

26. 연산자 기호맞추기[문제]

# ex39_문제.py

# 연산자 기호 맞추기 게임
# 1. 1~10 사이의 랜덤 숫자 2개를 저장한다.
# 2. 1~4 사이의 랜덤 숫자 1개를 저장한다.
# 3. 위 숫자는 연산자 기호에 해당된다.
# 	  1) 덧셈	  2)  뺼셈     3) 곱셈	 4) 나머지
# 4. 사용자는 연산자 기호를 맞추는 게임이다.
# 예) 3 ? 4  = 7
#     1) + 2) - 3) * 4) %
#     정답 : 1번

  • 정답
# ex39_정답.py

# 연산자 기호 맞추기 게임
# 1. 1~10 사이의 랜덤 숫자 2개를 저장한다.
# 2. 1~4 사이의 랜덤 숫자 1개를 저장한다.
# 3. 위 숫자는 연산자 기호에 해당된다.
# 	  1) 덧셈	  2)  뺼셈     3) 곱셈	 4) 나머지
# 4. 사용자는 연산자 기호를 맞추는 게임이다.
# 예) 3 ? 4  = 7
#     1) + 2) - 3) * 4) %
#     정답 : 1번

import random

x = random.randint(1, 10)
y = random.randint(1, 10)

op = random.randint(1, 4)

z = 0
if op == 1:
    z = x + y
elif op == 2:
    z = x - y
elif op == 3:
    z = x * y
elif op == 4:
    z = x % y

print(x, y, "=", z)
print("1.더하기")
print("2.빼기")
print("3.곱하기")
print("4.나머지")

my_answer = int(input("메뉴를 선택하세요 : "))
if my_answer == op:
    print("정답")
else:
    print("땡")

27. 가위바위보 업그레이드(하나빼기)

# 가위바위보 업그래이드 (하나빼기)

import random


comleft = random.randint(0,2)
comright = random.randint(0,2)


meleft = int(input("meleft ==> 0) 가위 , 1) 바위 , 2) 보"))
meright = int(input("meright ==> 0) 가위 , 1) 바위 , 2) 보"))


if comleft == 0:
    print("comleft ==> 가위")
elif comleft == 1:
    print("comleft ==> 바위")
elif comleft == 2:
    print("comleft ==> 보")

if comright == 0:
    print("comright ==> 가위")
elif comright == 1:
    print("comright ==> 바위")
elif comright == 2:
    print("comright ==> 보")

if meleft == 0:
    print("meleft ==> 가위")
elif meleft == 1:
    print("meleft ==> 바위")
elif meleft == 2:
    print("meleft ==> 보")

if meright == 0:
    print("meright ==> 가위")
elif meright == 1:
    print("meright ==> 바위")
elif meright == 2:
    print("meright ==> 보")

comran = random.randint(0,1)
if comran == 0:
    com = comleft
else:
    com = comright

me = int(input("하나빼기 ==> 0) left , 1) right"))
if me == 0:
    me = meright
else :
    me = meleft
print(com  , " " ,  me)
# 여기서 me 와 com 을 비교해서 승부 결정


28. 반복문(1단계)[문제]

# ex41_문제.py

# 반복문 기본문제[1단계]

# 문제1) 1~10까지 반복해 5~9 출력
# 정답1) 5, 6, 7, 8, 9

# 문제2) 10~1까지 반복해 6~3 거꾸로 출력
# 정답2) 6, 5, 4, 3

# 문제3) 1~10까지 반복해 짝수만 출력
# 정답3) 2, 4, 6, 8, 10

정답

# ex41_정답.py

# 반복문 기본문제[1단계]

# 문제1) 1~10까지 반복해 5~9 출력
# 정답1) 5, 6, 7, 8, 9
i = 1
while i <= 10:
    if 5 <= i and i <= 9:
        # end를 통해 여러 개의 값을 한 줄로 출력할 수 있다.
        print(i, end=" ")
    i = i + 1
print()

# 문제2) 10~1까지 반복해 6~3 거꾸로 출력
# 정답2) 6, 5, 4, 3
i = 10
while i >= 1:
    if 3 <= i and i <= 6:
        print(i, end=" ")
    i = i - 1
print()

# 문제3) 1~10까지 반복해 짝수만 출력
# 정답3) 2, 4, 6, 8, 10
i = 1
while i <= 10:
    if i % 2 == 0:
        print(i, end=" ")
    i = i + 1

29. 반복문(2단계)[문제]

# ex42_문제.py

# 반복문 기본문제[2단계]

# 문제1) 1~5까지의 합 출력
# 정답 1) 15

# 문제2) 1~10까지 반복해 3미만 7이상만 출력
# 정답2) 1, 2, 7, 8, 9, 10

# 문제3) 문제2의 조건에 맞는 수들의 합 출력
# 정답3) 37

# 문제4) 문제2의 조건에 맞는 수들의 개수 출력
# 정답4) 6

정답

# ex42_정답.py

# 반복문 기본문제[2단계]

# 문제1) 1~5까지의 합 출력
# 정답 1) 15
total = 0

i = 1
while i <= 5:
    total = total + i
    i = i + 1
print("total =", total)

# 문제2) 1~10까지 반복해 3미만 7이상만 출력
# 정답2) 1, 2, 7, 8, 9, 10
i = 1
while i <= 10:
    if 7 <= i or i < 3:
        print(i, end=" ")
    i = i + 1
print()

# 문제3) 문제2의 조건에 맞는 수들의 합 출력
# 정답3) 37
total = 0
i = 1
while i <= 10:
    if 7 <= i or i < 3:
        total = total + i
    i = i + 1
print("total =", total)

# 문제4) 문제2의 조건에 맞는 수들의 개수 출력
# 정답4) 6
count = 0
i = 1
while i <= 10:
    if 7 <= i or i < 3:
        count = count + 1
    i = i + 1
print("count =", count)

30. 구구단 게임(3단계)[문제]

# ex43_문제.py

# 구구단 게임[3단계]
# 1. 구구단 게임을 5회 반복한다.
# 2. 정답을 맞추면 20점이다.
# 3. 게임 종료 후, 성적을 출력한다.

구구단 게임(3단계)[정답]

# ex43_정답.py

# 구구단 게임[3단계]
# 1. 구구단 게임을 5회 반복한다.
# 2. 정답을 맞추면 20점이다.
# 3. 게임 종료 후, 성적을 출력한다.

import random

count = 0
i = 1
while i <= 5:
    x = random.randint(2, 9)
    y = random.randint(1, 9)

    answer = x * y

    print(x, "X", y, "= ?")
    my_answer = int(input("정답 입력 : "))
    if answer == my_answer:
        count = count + 1
        print("정답")
    else:
        print("땡")
    i = i + 1

score = count * 20

print("성적 =", score)

import random

i=1
score =0
while i<=5:

  number_one = random.randint(2,9)
  number_two = random.randint(1,9)

  answer = number_one * number_two

  print(f"{number_one} x {number_two} = ?")

  my_answer = int(input("정답을 입력하세요"))

  if my_answer == answer:
    score = score + 20

  i = i + 1

print("총 점수는", score)

Leave a comment