목 차
Ⅰ. 문자열 개요
1. 문자열 기초
2. 문자열 다루기
Ⅱ. 플러스 예제
1. 모스 부호
Ⅲ. 연습 문제
Ⅳ. 프로그래밍 문제
Ⅰ. 문자열 개요
1. 문자열 기초
연구 1-1)
입력받은 문자열을 s에 저장한 후 거꾸로 한 글자씩 출력하는 프로그램을 작성하시오
풀이)
s = input("문자열 입력 : ")
for i in range(len(s) - 1, -1, -1):
print(s[i])
리스트처럼 아래와 같이 코드를 작성해보니 AttributeError: 'str' object has no attribute 'reverse'라는 에러가 출력되어 풀이와 같이 코드를 작성하였다.
s = input("문자열 입력 : ")
s.reverse()
print(s)
연구 1-2)
입력받은 문장이 회문인지 아닌지 판별하는 프로그램을 작성하시오(회문 : 거꾸로 뒤집어도 뒤집기 전과 같은 문장이나 단어)
풀이)
str1 = input("문장 입력 : ")
str2 = ''
for i in range(len(str1) - 1, -1, -1):
str2 = str2 + str1[i]
if str1 == str2:
print("회문입니다.")
else:
print("회문이 아닙니다.")
풀이의 5행을 "str2 = str1[ i ]"로 작성하면 str2의 내용이 계속 덮어써지면서 원하는 결과물이 출력되지 않는다. 그래서 "str2 = str2 + str1[ i ]"로 작성한 것이다.
자세한 내용은 아래 생성형 ai의 답변을 참고해보자.
2. 문자열 다루기
연구 2-1)
사용자가 입력한 문자열에서 대문자는 소문자로, 소문자는 대문자로 바꾸는 프로그램 작성해보기
풀이)
str1 = input("문자열 입력 : ")
str2 = ''
for i in str1:
if i.isupper():
str2 += i.lower()
elif i.islower():
str2 += i.upper()
else:
str2 += i
print(str2)
연구 2-2)
학생들로부터 좋아하는 친구를 입력받아 하나의 리스트로 만드는 프로그램을 작성해보기(사용자가 여러 명을 입력한 경우에는 split() 함수를 이용해서 한 명씩 분리)
풀이)
friend_list = []
while True:
friend_name = input("좋아하는 친구의 이름 또는 종료 입력(여러 명 입력 시 \",\" 사용) : ")
if friend_name == "종료":
break
friend_list.extend(friend_name.split(", "))
print(friend_list)
Ⅱ. 플러스 예제
1. 모스 부호
모스 부호 번역 1)
입력받은 영어 단어 모스 부호로 번역하는 프로그램을 작성하시오
풀이)
al = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
morse = [".-", "-..", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
answer = input("영어 단어 입력 : ").upper()
for i in range(len(answer)):
if answer[i] in al:
print(morse[al.index(answer[i])], end=' ')
모스 부호 번역 2)
입력받은 모스 부호로 이루어진 단어를 영어로 번역하는 프로그램을 작성하시오
풀이)
al = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
morse = [".-", "-..", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
answer = input("모스 부호 입력(각 부호는 공백으로 구분) : ")
answer = answer.split(" ")
for i in range(len(answer)):
if answer[i] in morse:
print(al[morse.index(answer[i])], end='')
else:
print("모스 부호 표를 참고하여 모스 부호를 공백으로 구분하여 입력해주세요.")
관련 문제 2-1)
영어 단어를 입력하면 모스 부호로 변환하고, 모스 부호로 단어를 입력하면 영어로 변환하는 프로그램을 작성하시오
풀이)
al = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
morse = [".-", "-..", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
answer = input("영어 단어, 또는 모스 부호를 입력하세요.(모스 부호 입력 시 각 부호는 공백으로 구분) : ").upper()
if answer.isalpha():
for i in range(len(answer)):
print(morse[al.index(answer[i])], end=' ')
answer = answer.split(" ")
for i in range(len(answer)):
if answer[i] in morse:
print(al[morse.index(answer[i])], end='')
도전 문제 2-1)
영어 단어를 입력하면 모스 부호로 변환하고, 모스 부호로 단어를 입력하면 영어로 변환하는 프로그램을 작성하시오.(단, 사용자가 종료를 입력할 때까지 프로그램은 반복해서 동작해야 함.)
풀이)
al = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
morse = [".-", "-..", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
while True:
answer = input("영어 단어 또는 모스 부호를 입력하세요.(모스 부호 입력 시 각 부호는 공백으로 구분 / 프로그램 종료를 위해서는 \"종료\" 입력) : ").upper()
if answer == "종료":
print("프로그램을 종료합니다.")
break
elif answer.isalpha():
for i in range(len(answer)):
print(morse[al.index(answer[i])], end=' ')
answer = answer.split(" ")
for i in range(len(answer)):
if answer[i] in morse:
print(al[morse.index(answer[i])], end='')
Ⅲ. 연습 문제
연습 문제 1-1)
다음 코드의 실행 결과를 예측하시오
s = "Python " + "3.13"
print(s)
풀이)
Python 3.13
연습 문제 1-2)
다음 코드의 실행 결과를 예측하시오
s = "Hello Python" * 2
print(s)
풀이)
Hello PythonHello Python
연습 문제 1-3)
다음 코드의 실행 결과를 예측하시오
s = "Hello Python"
for i in range(len(s)):
print(s[i], end='')
풀이)
Hello Python
연습 문제 1-4)
다음 코드의 실행 결과를 예측하시오
s = "Hello Python"
print(len(s))
print(s[0])
print(s[3])
print(s[2:6])
print(s[:5])
print(s[5:])
풀이)
12
H
l
llo
Hello
Python
연습 문제 1-5)
다음 코드의 실행 결과를 예측하시오
s = "Hello Python"
print(s.lower())
print(s.upper())
풀이)
hello python
HELLO PYTHON
연습 문제 1-6)
다음 코드의 실행 결과를 예측하시오
s = "Hello Python"
print(s.find("Python"))
print(s.find("C"))
풀이)
6
-1
연습 문제 1-7)
다음 코드의 실행 결과를 예측하시오
s = " 12345kg"
s = s.lstrip()
s = s.rstrip("kg")
print(s)
풀이)
12345
연습 문제 1-8)
다음 코드의 실행 결과를 예측하시오
s = "Hello Python!"
print(s.isdigit())
print(s.isalpha())
print(s.isalnum())
print(s.islower())
print(s.isupper())
print(s.isspace())
풀이)
False
False
False
False
False
False
연습 문제 1-9)
다음 코드의 실행 결과를 예측하시오
pi = "3.14"
print(float(pi))
풀이)
3.14
연습 문제 2-1)
다음 코드를 실행하면 오류가 발생한다. 그 원인을 설명하고 코드를 수정하시오
s = "Python" * "3"
print(s)
풀이)
위의 코드는 "Python"을 세 번 반복하여 "PythonPythonPython"으로 출력하려는 코드인데 3을 큰 따옴표( " )로 감싸서 3을 문자열로 인식하여 오류가 발생한다.(오류 : TypeError: can't multiply sequence by non-int of type 'str')
큰 따옴표를 삭제해주면 오류가 발생하지 않는다.
s = "Python" * 3
print(s)
연습 문제 2-2)
다음 코드를 실행하면 오류가 발생한다. 그 원인을 설명하고 코드를 수정하시오
s = "Python" + 3
print(s)
풀이)
위의 코드에서 변수 s를 보면 문자열과 숫자의 덧셈이므로 오류가 발생한다.(오류 : TypeError: can only concatenate str (not "int") to str)
" + 3"을 삭제하여 "Python"만 출력되도록 하거나 " + "를 " * "로 바꿔주어 "Python"이 연달아서 세 번 출력되도록 수정해야 한다.
// 풀이 1
s = "Python"
print(s)
// 풀이 2
s = "Python" * 3
print(s)
연습 문제 2-3)
다음 코드를 실행하면 오류가 발생한다. 그 원인을 설명하고 코드를 수정하시오
s = "Python"
for i in s:
print(s[i], end = "")
풀이)
"for i in s:" 는 문자열 s의 각 문자를 순서대로 변수 i에 할당한다.
그런데 print() 함수를 보면 "s[ i ]" 라고 적혀져 있는데 이렇게 되면 s[ P ], s[ y ], s[ t ], ... 이런 식으로 들어가게 된다.
print() 함수의 "s[ i ]"의 i 에는 정수 인덱스가 들어가야 되는데 알파벳이 들어가서 오류가 출력되는 것이다.(오류 : TypeError: string indices must be integers, not 'str')
이를 해결하기 위해 for 문의 " s "를 "range(len(s))"로 변경하거나 print() 함수 내의 "s[ i ]"를 " i "로 변경하여야 한다.
// 풀이 1
s = "Python"
for i in range(len(s)):
print(s[i], end = "")
// 풀이 2
s = "Python"
for i in s:
print(i, end = "")
연습 문제 2-4)
다음 코드를 실행하면 오류가 발생한다. 그 원인을 설명하고 코드를 수정하시오
s = "3.14"
print(int(s))
풀이)
위의 코드는 변수 s에 저장된 문자열 3.14를 숫자로 형 변환을 해서 출력하려고 하는 코드이다.
그러나 3.14는 실수형인데 정수형인 int를 사용해서 형 변환을 하였으므로 오류가 발생한다.(오류 : ValueError: invalid literal for int() with base 10: '3.14')
int를 float로 고쳐주어야 오류가 출력되지 않는다.
s = "3.14"
print(float(s))
연습 문제 2-5)
다음 코드를 실행하면 오류가 발생한다. 그 원인을 설명하고 코드를 수정하시오
print(chr("A" + 1))
풀이)
위 코드의 print() 함수 안의 chr() 함수는 정수에 해당하는 문자를 반환하는 함수이다. 그런데 chr() 함수 안에 "A"라는 문자가 들어있으므로 오류가 발생하는 것이다.(오류 : TypeError: can only concatenate str (not "int") to str)
문자에 해당하는 정수를 반환하는 ord() 함수를 사용하여 "chr("A" + 1)"을 "chr(ord("A") + 1)"로 고쳐주어야 한다.
print(chr(ord("A") + 1))
연습 문제 3)
변수 s에 저장된 문자열 오른쪽의 "kg"을 제거하기 위해 다음과 같이 코드를 작성했으나 원하는 결과가 나오지 않았다. 그 원인을 설명하고 코드를 수정하시오
s = "77kg"
if s.find("kg") == -1:
print(s.rstrip("kg"))
else:
print(s)
풀이)
위 코드의 if 문을 보면 "if s.find("kg") == -1" 이라고 작성되어 있는데 이는 문자열 내에 "kg"가 없을 때 참이 된다.
그런데 변수 s의 문자열 값은 "kg"를 포함하고 있으므로 else 문이 출력되어 "77kg" 이 출력되는 것이다.
if 문의 "=="를 "!="로 바꿔줘야 한다.
s = "77kg"
if s.find("kg") != -1:
print(s.rstrip("kg"))
else:
print(s)
연습 문제 4)
입력받은 문자열을 거꾸로 뒤집어서 변수 b에 저장하는 프로그램을 작성하시오
풀이)
a = input("문자열 입력 : ")
b = ''
for i in range(len(a) - 1, -1, -1):
b += a[i]
print(b)
연습 문제 5)
입력받은 문자열에서 첫 번째 문자와 마지막 문자를 비교하고, 두 번째 문자와 끝에서 두 번째 문자를 비교하는 식으로 회문을 판별하는 프로그램을 작성하시오
풀이)
s = input("문자열 입력 : ")
check = 1
for i in range(len(s)//2):
if s[i] != s[-1-i]:
check = 0
break
if check == 1:
print("회문입니다.")
else:
print("회문이 아닙니다.")
연습 문제 6)
키(cm)와 몸무게(kg)를 입력받아 체질량지수를 구하는 프로그램을 작성하시오
체질량지수 = 몸무게 / 키 * 키
풀이)
height = input("키(cm) 입력 : ")
weight = input("몸무게(kg) 입력 : ")
if height.find("cm") != -1:
height = float(height.replace("cm", ""))
else:
height = float(height)
if weight.find("kg") != -1:
weight = float(weight.replace("kg", ""))
else:
weight = float(weight)
bmi = weight / (height/100 * height/100)
print(bmi)
Ⅳ. 프로그래밍 문제
프로그래밍 문제 1)
입력받은 문자열의 길이가 4 이상이면서 "zzz"가 포함되어있지 않으면 "pass"를 출력하고, 그렇지 않으면 "fail"을 출력하는 프로그램을 작성하시오
풀이)
s = input("문자열 입력 : ")
if len(s) >= 4 and s.find("zzz") == -1:
print("pass")
else:
print("fail")
프로그래밍 문제 2)
입력받은 문자열에서 영어 스펠링의 개수, 숫자 개수, 기타 문자의 개수를 세는 프로그램을 작성하시오
풀이)
al = "abcdefghijklmnopqrstuvwxyz"
num = "0123456789"
al_sum = 0
num_sum = 0
other_sum = 0
s = input("문자열 입력 : ")
for i in range(len(s)):
if s[i].lower() in al:
al_sum += 1
elif s[i] in num:
num_sum += 1
else:
other_sum += 1
print(f'스펠링 수 : {al_sum}, 숫자 수 : {num_sum}, 기타 문자 수 : {other_sum}')
프로그래밍 문제 3)
입력받은 메뉴 목록을 " , "를 구분자로 분리해서 리스트에 저장하는 프로그램을 작성하시오
풀이)
menus_input = input("메뉴 입력(여러가지 메뉴 입력 시 \", \"로 구분) : ")
menus = menus_input.split(", ")
print(menus)
끝.

'Python > Basic programming' 카테고리의 다른 글
Ch05. 리스트 (0) | 2025.04.03 |
---|---|
Ch04. 반복 구조 (0) | 2025.03.24 |
Ch03. 선택 구조 (2) | 2025.03.06 |
Ch02. 변수와 연산자 (0) | 2025.03.04 |
Ch01. 파이썬 기초 (0) | 2025.03.03 |