4.python을 이용한 알고리즘 문제(1~30)
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