로딩 중이에요... 🐣
02 04 문제와 정답 | ✅ 저자: 이유정(박사)
💭직접 풀어보세요.
📝 문제1] 문자열 "apple,banana,grape"
를 쉼표 ,
기준으로 나눠서 출력하세요.
✅ 정답 코드:
fruits = "apple, banana, grape"
print(fruits.split(","))
🖨️ 출력 결과:
['apple', 'banana', 'grape']
📝 문제2] 사용자에게 공백으로 구분된 취미 목록을 입력받고, 리스트로 출력해보세요.
✅ 정답 코드:
hobbies = input("취미를 입력하세요 (공백으로 구분): ") print(hobbies.split())
🖨️ 출력 결과 (예시 입력: "독서 여행 영화"
):
['독서', '여행', '영화']
🔍 해설:
- 입력된 문자열에서 공백 기준으로 단어들을 나눠 리스트로 변환합니다.
.split()
의 기본값은 공백입니다.
📝 문제3] "2025/05/08"
문자열을 /
기준으로 자르고, 연도, 월, 일을 각각 출력하세요.
✅ 정답 코드:
date = "2025/05/08"
year, month, day = date.split("/")
print("연도:", year)
print("월:", month)
print("일:", day)
🖨️ 출력 결과:
연도: 2025
월: 04
일: 30
🔍 해설:
/
를 기준으로 문자열을 세 부분으로 나눕니다.- 변수 여러 개에 한 번에 저장(언패킹)도 가능합니다.
📝 문제4] 사용자에게 이름과 나이를 입력받고, f-문자열로 자기소개 문장을 출력하세요.
🖨️ 출력 결과 (예시 입력: 이름 = 유정, 나이 = 20):
제 이름은 유정이고, 나이는 20살입니다.
✅ 정답 코드:
name = input("이름을 입력하세요: ")
age = input("나이를 입력하세요: ")
print(f"제 이름은 {name}이고, 나이는 {age}살입니다.")
🔍 해설:
input()
으로 받은 값을 바로 f-문자열 안에서 사용합니다.- 문자열 합치기 없이 깔끔하게 출력할 수 있습니다.
📝 문제5] 반지름이 5인 원의 넓이를 f-문자열을 이용해 출력하세요. (원주율은 3.14)
원의 넓이 공식] 넓이 = 원주율 × 반지름²
✅ 정답 코드:
radius = 5
PI = 3.14
area = PI * radius * radius
print(f"반지름이 {radius}인 원의 넓이는 {area}입니다.")
🖨️ 출력 결과:
반지름이 5인 원의 넓이는 78.5입니다.
🔍 해설:
- 계산된 값도 f-문자열 내에서 출력 가능 →
{area}
- 여러 값을 손쉽게 한 줄에 표현할 수 있습니다.
📝 문제6] 두 숫자를 입력받아 합을 출력하는데, f-문자열을 사용해 보세요.
✅ 정답 코드:
a = int(input("첫 번째 숫자: "))
b = int(input("두 번째 숫자: "))
total = a + b
print(f"{a}와 {b}의 합은 {total}입니다.")
🖨️ 출력 결과 (예시 입력: 7, 3):
7와 3의 합은 10입니다.
🔍 해설:
- 수식 결과를
{}
안에 넣어 출력할 수 있어 계산과 표현을 동시에 처리 가능 - 변수뿐 아니라 수식도 직접 넣을 수 있음 →
f"{a + b}"
도 가능
📝 문제7] "이름: {}
/ 국가: {}
" 형식의 문자열 템플릿을 만들어 여러 나라 이름을 아래 출력결과와 같이 반복 출력해보세요.
🖨️ 출력 결과:
이름: Eunice / 국가: Korea
이름: Emma / 국가: USA
이름: Akira / 국가: Japan
✨ 힌트:
같은 형식을 반복할 때 f-string
보다 format()
이 더 효율적입니다.
문자열 재사용이 가능해 코드가 간결해집니다.
✅ 정답 코드:
template = "이름: {} / 국가: {}"
print(template.format("Eunice", "Korea")) print(template.format("Emma", "USA")) print(template.format("Akira", "Japan"))
📝 문제8] 출력 위치를 맞추기 위해 {:<10}
, {:>10}
, {:^10}
같은 정렬 포맷을 사용하여 출력 결과와 같이 작성해보세요.
🖨️ 출력 결과:
left | right| center
✅ 정답 코드:
print("{:<10} | {:>10} | {:^10}".format("left", "right", "center"))
🔢 자릿수 인덱스 참고표
idx | 0 1 2 3 4 5 6 7 8 9 | 10 11 12 13 14 15 16 17 18 19 | 20 21 22 23 24 25 26 27 28 29 |
---|---|---|---|
내용 | left +공백6칸 | 공백 5칸 + right(글자5개) | 공백2칸 + center(글자6) + 공백2칸 |
🔍 해설:
{:<10}
: 왼쪽 정렬 (10칸){:>10}
: 오른쪽 정렬{:^10}
: 가운데 정렬- f-string에서도 가능하지만, 반복되거나 복잡할 땐
format()
이 더 깔끔합니다. - 영문(ASCII 문자)은 한 글자당 1칸을 차지하고, 한글(유니코드 한글)은 한 글자당 2칸을 차지하는 것처럼 보입니다. 하지만 실제로는 한글도 1글자 = 1칸(width 1)로 계산됩니다.
📝 문제9] 단어 3개가 있습니다. Python, Eunice, loves 이것을 format()
을 사용해서 아래 출력 결과와 같이 출력해 보세요.
🖨️ 출력 결과:
Eunice loves Python
✅ 정답 코드:
print("{1} {2} {0}".format("Python", "Eunice", "loves"))
🔍 해설:
{1}
은 두 번째 인자"Eunice"
를 먼저 출력- f-string은 위치 지정이 어려워, 순서 교체에는
format()
이 더 유연합니다.
📝 문제10] 사용자에게 이름을 입력받아 대문자로 출력해보세요.
✨ 힌트:
input()
으로 이름을 문자열로 입력받음
.upper()
로 대문자로 변환
✅ 정답 코드:
name = input("이름을 입력하세요: ")
print("대문자 이름:", name.upper())
🖨️ 출력 결과 (예시 입력: eunice):
대문자 이름: EUNICE
📝 문제11] 문자열 "PyTHon Is FUN"
을 모두 소문자로 바꿔서 출력하세요.
✨ 힌트: lower( ) 함수는 소문자로 변환해 줍니다.
✅ 정답 코드:
msg = "PyTHon Is FUN"
print("소문자 변환:", msg.lower())
🖨️ 출력 결과:
소문자 변환: python is fun
📝 문제12] 이메일 아이디 비교
사용자가 입력한 이메일이 "admin@site.com"인지 확인하려고 합니다.
대소문자 상관없이 비교하기 위해 소문자로 변환해서 비교하세요.
✨ 힌트: 사용자가 입력한 이메일을 소문자로 변환한 후 조건문을 통해 비교 연산자로 작성하세요.
✅ 정답 코드:
email = input("이메일 입력: ")
if email.lower() == "admin@site.com":
print("관리자 계정입니다.")
else:
print("일반 사용자입니다.")
🖨️ 출력 결과 (예시 입력: Admin@Site.Com):
관리자 계정입니다.
📝 문제13] 사용자에게 입력받은 이름 양옆의 공백을 제거한 후 출력해보세요.
✨ 힌트:
input()
으로 입력받은 값은 양옆에 공백을 포함할 수 있습니다..strip()
을 사용하여 양옆의 공백을 제거하고 출력합니다.
✅ 정답 코드:
name = input("이름을 입력하세요: ")
print("공백 제거된 이름:", name.strip())
🖨️ 출력 결과 (예시 입력: " Eunice "
):
공백 제거된 이름: Eunice
📝 문제14] 문자열 " Python is great! \n"
에서 양옆의 공백과 개행 문자
(\n
)를 제거해보세요.
✨ 힌트:
strip()
은 문자열에서 양옆의 공백과 개행 문자를 모두 제거합니다.- 중간에 있는 공백은 영향을 받지 않습니다.
✅ 정답 코드:
msg = " Python is great! \n"
print("공백 및 개행 문자 제거:", msg.strip())
🖨️ 출력 결과:
공백 및 개행 문자 제거: Python is great!
📝 문제15] 사용자에게 이메일 주소를 입력받고, 양옆의 공백을 제거한 후 확인 메시지를 출력하세요.
✨ 힌트: 사용자가 입력한 이메일에 양옆에 공백이 있을 수 있습니다. .strip( )으로 공백을 제거하고, 확인 메시지를 출력합니다.
✅ 정답 코드:
email = input("이메일을 입력하세요: ")
print("공백 제거된 이메일:", email.strip())
🖨️ 출력 결과 (예시 입력: " admin@site.com "
):
공백 제거된 이메일: admin@site.com
📝 문제16] 문자열 "I love coffee and coffee loves me"
에서 "coffee"
가 처음 등장하는 위치를 찾아 출력하세요.
✅ 정답 코드:
text = "I love coffee and coffee loves me"
print("처음 등장 위치:", text.find("coffee"))
🖨️ 출력 결과:
처음 등장 위치: 7
🔍 해설:
"coffee"
는"I love coffee"
에서 7번째 인덱스에 처음 나옵니다.
📝 문제17] 같은 문자열에서 "coffee"
가 마지막으로 등장하는 위치를 출력해보세요.
✅ 정답 코드:
text = "I love coffee and coffee loves me"
print("마지막 등장 위치:", text.rfind("coffee"))
🖨️ 출력 결과:
마지막 등장 위치: 17
🔍 해설:
"coffee"
는"and coffee loves me"
부분에서 17번째 인덱스에 마지막으로 등장합니다.
📝 문제18] 문자열 "hello world"
에서 "Python"
이 포함되어 있는지 확인하고, 없으면 "찾을 수 없음"
을 출력하세요.
text = "hello world"
✨ 힌트:
find()
는 찾는 문자열이 없으면 -1
을 반환합니다.
이를 조건문에서 활용하여 문자열의 존재 여부를 확인할 수 있습니다.
✅ 정답 코드:
text = "hello world"
if text.find("Python") == -1:
print("찾을 수 없음")
else:
print("찾은 위치:", text.find("Python"))
🖨️ 출력 결과:
찾을 수 없음