문제 설명:
과일 이름이 담긴 리스트가 주어집니다. for문을 사용하여 각 과일을 순서대로 출력하되, "N번째: 과일이름" 형식으로 출력하세요. (N은 1부터 시작)
입력 예시:
입력 없음
출력 예시:
1번째: 사과
2번째: 바나나
3번째: 포도
4번째: 오렌지
내가 작성한 코드문
fruits = ["사과", "바나나", "포도", "오렌지"]
for i in range(len(fruits)):
print(f"{i+1}번째: {fruits[i]}")
문제 설명:
사용자로부터 2~9 사이의 숫자를 입력받아, 해당 단의 구구단을 출력하세요.
range 함수를 사용하여 1부터 9까지 반복하세요.
입력 예시:
5
출력 예시:
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
내가 작성한 코드문
num = int(input("2~9사이 숫자를 입력하세요: "))
for i in range(1, 10):
print(f"{num} X {i} = {num*i}")
문제 설명:
사용자로부터 숫자를 입력받아, 해당 숫자부터 0까지 카운트다운을 출력하세요. 0이 되면 "발사!"를 출력하고 종료합니다.
입력 예시:
5
출력 예시:
5
4
3
2
1
0
발사!
내가 작성한 코드문
num = int(input("숫자를 입력하세요: "))
while num >= 0:
print(num)
num -=1
print("발사!")
문제 설명:
서울, 부산, 대구 세 도시의 좌표를 튜플로 저장하세요. 각 좌표는 (위도, 경도) 형태입니다. 사용자로부터 도시 이름을 입력받아 해당 도시의 좌표를 출력하세요.
입력 예시:
부산
출력 예시:
부산의 좌표: (35.1796, 129.0756)
위도: 35.1796
경도: 129.0756
내가 작성한 코드문
seoul = (37.5665, 126.9780)
busan = (35.1796, 129.0756)
daegu = (35.8714, 128.6014)
tp = tuple(zip(seoul, busan, daegu))
print(tp)
area = input("지역을 입력하세요: ")
if area == "서울":
print(f"{area}의 좌표: {tp[0][0], tp[1][0]}")
print(f"위도: {tp[0][0]}")
print(f"경도: {tp[1][0]}")
elif area == "부산":
print(f"{area}의 좌표: {tp[0][1], tp[1][1]}")
print(f"위도: {tp[0][1]}")
print(f"경도: {tp[1][1]}")
else:
print(f"{area}의 좌표: {tp[0][2], tp[1][2]}")
print(f"위도: {tp[0][1]}")
print(f"경도: {tp[1][1]}")
zip으로 3개의 튜플을 하나로 묶었다.
다른 사람의 풀이
seoul = (37.5665, 126.9780)
busan = (35.1796, 129.0756)
daegu = (35.8714, 128.6014)
city = input()
if city == "서울":
coord = seoul
elif city == "부산":
coord = busan
else:
coord = daegu
print(f"{city}의 좌표 {coord}")
print(f"위도: {coord[0]}")
print(f"경도: {coord[1]}")
zip을 안써도 되는 풀이다.
더 간결하고 정말 이렇게 해도 된다.
seoul, busan 이렇게만 받아도 튜플을 출력할 수 있다.
문제 설명:
3명의 이름과 전화번호를 입력받아 딕셔너리에 저장하세요. 그 후 사용자로부터 이름을 입력받아 해당 이름의 전화번호를 출력하세요. 이름이 없으면 "등록되지 않은 이름입니다."를 출력하세요.
입력 예시:
김철수
010-1234-5678
이영희
010-2345-6789
박민수
010-3456-7890
이영희
출력 예시:
이영희의 전화번호: 010-2345-6789
입력 예시:
김철수
010-1234-5678
이영희
010-2345-6789
박민수
010-3456-7890
홍길동
출력 예시:
등록되지 않은 이름입니다.
내가 작성한 코드문
a,b,c = list(map(str, input("이름을 입력하세요: ").split()))
x,y,z = list(map(str, input("전화번호를 입력하세요: ").split()))
name = a,b,c
phone = x,y,z
dic = dict(zip(name, phone))
find_name = input("이름을 입력하세요: ")
print(find_name)
if find_name in dic:
print(dic[find_name])
else:
print("등록되지 않은 이름입니다.")
input().split을 쓴 방법이다. 오늘 배운거 한번 써보고 싶었다.
다른 사람의 풀이
phone_book = {}
for i in range(3):
name = input()
phone = input()
phone_book[name] = phone
search = input()
if search in phone_book:
print(f"{search}의 전화번호 {phone_book[search]}")
else:
print("등록되지 않은 이름입니다.")
반복문을 통한 인풋을 하고 키가 딕셔너리에 있을시 딕셔너리의 키와 값을 출력
문제 설명:
상품명을 key, 재고 수량을 value로 하는 딕셔너리가 주어집니다.
입력 예시:
입력 없음
출력 예시:
=== 전체 재고 현황 ===
노트북: 15개
마우스: 8개
키보드: 12개
모니터: 5개
헤드셋: 20개
=== 재고 부족 상품 ===
마우스: 8개 (부족)
모니터: 5개 (부족)
총 재고: 60개
내가 작성한 코드문
inventory = {
"노트북": 15,
"마우스": 8,
"키보드": 12,
"모니터": 5,
"헤드셋": 20
}
print("=== 전체 재고 현황 ===")
for i in inventory:
print(f"{i}: {inventory[i]}개")
print("=== 재고 부족 상품 ===")
for i in inventory:
if inventory[i] < 10:
print(f"{i}: {inventory[i]}개 (부족)")
count = 0
for i in inventory.values():
count += i
print("")
print(f"총 재고: {count}개")
다른 사람의 풀이
inventory = {
"노트북": 15,
"마우스": 8,
"키보드": 12,
"모니터": 5,
"헤드셋": 20
}
total = 0
for product, quantity in inventory.items():
print(f"{product}: {quantity}개")
for product, quantity in inventory.items():
total += quantity
if quantity < 10:
print(f"{product}: {quantity}개 (부족)")
print(f"총 재고: {total}개")
반복문을 두개만 썼으며 두번째 반복문에서 total값도 계산하며 .items()로 키, 밸류값 두개를 출력한다.
문제 설명:
1부터 20까지의 숫자 중에서 짝수만 출력하되, 10 이상인 짝수는 "큰 짝수: N"으로, 10 미만인 짝수는 "작은 짝수: N"으로 출력하세요.
입력 예시:
입력 없음
출력 예시:
작은 짝수: 2
작은 짝수: 4
작은 짝수: 6
작은 짝수: 8
큰 짝수: 10
큰 짝수: 12
큰 짝수: 14
큰 짝수: 16
큰 짝수: 18
큰 짝수: 20
내가 작성한 코드문
for i in range(1, 21):
if i % 2 == 0 and i >= 10:
print(f"큰 짝수: {i}")
if i % 2 == 0 and i < 10:
print(f"작은 짝수: {i}")
다른 사람의 풀이
for num in range(1, 21):
if num % 2 == 0:
if num >= 10:
print(f"큰 짝수: {num}")
else:
print(f"작은 짝수: {num}")
이중 조건문을 쓴 풀이 짝수이면서, 10 이상이다, 미만이다 이것을 좀더 간결하게 쓴 코드문.
문제 설명:
정답 숫자를 미리 정해두고(예: 42), 사용자가 숫자를 입력할 때마다 "Up" 또는 "Down" 힌트를 주세요. 정답을 맞추면 "정답입니다! N번 만에 맞추셨습니다."를 출력하고 종료하세요.
Hint: while문 + break
입력 예시:
정답: 42
50
30
40
42
출력 예시:
Down!
Up!
Up!
정답입니다! 4번 만에 맞추셨습니다.
내가 작성한 코드문
# 원하는 정답 숫자를 하나 정하세요!
answer = int(input("정답: "))
count = 1
while True:
usr = int(input("숫자를 입력하세요: "))
if usr > answer:
print("Down!")
count += 1
elif usr < answer:
print("Up!")
count += 1
else:
print(f"정답입니다! {count}번 만에 맞추셨습니다.")
break
다른 사람의 풀이
# 원하는 정답 숫자를 하나 정하세요!
answer = 42
count = 0
while True:
guess = int(input("숫자를 입력하세요: "))
count += 1
if guess == answer:
print(f"정답입니다! {count}번 만에 맞추셨습니다.")
break
elif guess > answer:
print("Down!")
else:
print("Up!")
count를 인풋 입력하고 나서 한번 +1 되게 했다.
더 간결해보임
문제 설명:
초기 잔액 100,000원으로 시작하는 ATM 프로그램을 while문 무한 루프와 break를 활용하여 만드세요. 각 메뉴에 해당하는 번호를 입력 받고:
"4"를 입력하면 프로그램을 종료합니다.
입력 예시:
1
2
50000
1
3
30000
1
4
출력 예시:
=== ATM ===
1. 잔액 조회
2. 입금
3. 출금
4. 종료
선택: 1
현재 잔액: 100000원
선택: 2
입금액: 50000
입금 완료! 현재 잔액: 150000원
선택: 1
현재 잔액: 150000원
선택: 3
출금액: 30000
출금 완료! 현재 잔액: 120000원
선택: 1
현재 잔액: 120000원
선택: 4
ATM을 종료합니다.
내가 작성한 코드문
print("=== ATM ===")
print("1. 잔액 조회")
print("2. 입금")
print("3. 출금")
print("4. 종료")
money = 100000
while True:
num = int(input("번호를 입력하세요: "))
if num == 1:
print(f"선택: {num}")
print(f"현재 잔액: {money}")
elif num == 2:
print(f"선택: {num}")
money += int(input("입금을 합니다: "))
print(f"입금완료! 현재 잔액: {money}")
elif num == 3:
print(f"선택: {num}")
money -= int(input("출금을 합니다: "))
print(f"출금완료! 현재 잔액: {money}")
elif num == 4:
print(f"선택: {num}")
print("종료합니다.")
break
while True 무한루프가 아닌
조건문을 달고 4번을 누를시 종료 되게 하는 방법도 있음.
다른 사람의 풀이
balance = 100000
print("\n=== ATM ===")
print("1. 잔액 조회")
print("2. 입금")
print("3. 출금")
print("4. 종료")
while True:
choice = input("선택: ")
if choice == "1":
print(f"현재 잔액: {balance}원")
elif choice == "2":
amount = int(input("입금액: "))
balance += amount
print(f"입금 완료! 현재 잔액: {balance}원")
elif choice == "3":
amount = int(input("출금액: "))
if amount > balance:
print(f"잔액이 부족합니다. (현재 잔액: {balance}원)")
else:
balance -= amount
print(f"출금 완료! 현재 잔액: {balance}원")
elif choice == "4":
print("ATM을 종료합니다.")
break
else:
print("올바른 번호를 선택해주세요.")
잔액 부족할때 출금 안되게 하는 경우 추가
elif num == 3:
print(f"선택: {num}")
withdraw_amount = int(input("출금을 합니다: "))
if money >= withdraw_amount:
money -= withdraw_amount
print(f"출금완료! 현재 잔액: {money}")
else:
print(f"잔액이 부족합니다. (현재 잔액: {money}원)")
이런식으로 리팩토링 하기
문제 설명:
3명의 후보자에 대한 투표를 진행합니다.
Hint: 후보자에 대한 득표수를 딕셔너리로 만드세요! {후보자:득표수}
입력 예시:
김철수
이영희
박민수
김철수
이영희
김철수
박민수
이영희
김철수
이영희
최지은
김철수
이영희
출력 예시:
=== 투표 결과 ===
총 투표자: 10명
유효 투표: 9표
무효 투표: 1표
=== 후보별 득표 현황 ===
김철수: 4표
이영희: 4표
박민수: 1표
=== 당선자 발표 ===
김철수 후보가 당선되었습니다! (득표수: 4표)
내가 작성한 코드문
# 1단계: 3명의 후보자 입력받기
x, y, z = input("이름을 입력하세요: ").split()
person = {}
person[x] = 0
person[y] = 0
person[z] = 0
print(person)
# 2단계: 10명의 투표 진행
count = 0
for i in range(10):
name = input()
if name in person:
person[name] += 1
print(name)
count += 1
else:
pass
# 3단계: 투표 결과 출력
print("=== 투표 결과 ===")
print(f"총 투표자: 10명")
print(f"유효 투표: {count}표")
print(f"무효 투표: {10 - count}표")
# 4단계: 후보 별 득표 현황 출력
print("=== 후보 별 득표 현황 ===")
print(f"{x}: {person[x]}표")
print(f"{y}: {person[y]}표")
print(f"{z}: {person[z]}표")
# 5단계: 당선자 찾기 및 출력
max = 0
winner = ""
for i, j in person.items():
if j > max:
max = j
winner = i
print("=== 당선자 발표 ===")
print(f"{winner}후보가 당선되었습니다! (득표수:{person[winner]}표)")
다른 사람의 풀이
# 1단계: 3명의 후보자 입력받기
candidates = {}
for i in range(3):
name = input()
candidates[name] = 0
# 2단계: 10명의 투표 진행
invalid_votes = 0
for i in range(10):
vote = input()
if vote in candidates:
candidates[vote] +=1
else:
invalid_votes += 1
# 3단계: 투표 결과 출력
print(f"총 투표자: 10명")
print(f"유효 투표: {10 - invalid_votes}표")
print(f"무효 투표: {invalid_votes}표")
# 4단계: 후보 별 득표 현황 출력
for name, votes in candidates.items():
print(f"{name}: {votes}표")
# 5단계: 당선자 찾기 및 출력
max_votes = 0
winner = ""
for name, votes in candidates.items():
if votes > max_votes:
max_votes = votes
winner = name
print(f"{winner} 후보가 당선되었습니다! (득표수: {max_votes}표)")
후보자 입력을 반복문으로 하고,
무효표라는 변수까지 만들어서 카운트 했다.
그 다음 유효표 = 10 - 무효표로 표시한점이 달랐다.
투표 결과 출력도 반복문 .item()을 활용해서
후보와 득표를 출력하고,
마지막에 당선자와 득표수도 딕셔너리내 밸류값이 아닌
max_votes로 출력해낸것이 달랐다.