[프로그래밍 언어]/python

따라하며 배우는 파이썬과 데이터 과학(개정판)_ch9 Lab, 도전문제 문제풀이

우당탕탕 개발 일지 2024. 5. 9. 11:02

안녕하세요. 우당탕탕 개발일지입니다.

따라 하며 배우는 파이썬과 데이터 과학(개정판)_ch9 lab 문제 변형과 도전문제만 적혀 있습니다. 개념을 알고 싶은 학생은 신속히 뒤로 가주세요

 

LAB 9-1~9-4

⚠️해답코드에서 변형하였습니다. 

 

LAB 9-1

#입력
s="This movie was terrible! The acting was poor and the story was boring."

#글자수 
print(f"글자수={len(s)}")


alpha_num=s.replace('!','') #type str
alpha_num=alpha_num.rstrip(".") #type str
print(f"특수문자 제외 알파벳 수={len(alpha_num)}")


#단어수
word_num=alpha_num.split() #type list
print(f"단어 리스트 ={word_num}")
print(f"단어수={len(word_num)}")


#평균 단어 길이_list comprehension
print(f"평균 단어의 길이={sum (len(word) for word in word_num)/len(word_num)}")


#평균단어 길이
add=0
for word in word_num:
    add+=len(word)
print(f"평균 단어의 길이={add/len(word_num)}")

 

LAB 9-2

s="This is an example of removing stop words from a string."
print(f"입력={s}")

#불용어 리스트 
stop_words=['is', 'an', 'of', 'from','a','and', 'the', 'to' ,'in']

#소문자,단어 구분
words=(s.lower()).split() #type list
print(f"단어 구분, 소문자로 ={words}")


#불용어 제거_list comprehension 
filter_word=[word for word in words if word not in stop_words ]
print(f"불용어 제거_list comprehension={filter_word}")


#불용어 제거
filter_word1=[]
for word in words:
    if word not in stop_words:
        filter_word1.append(word)
print(f"불용어 제거={filter_word1}")

#결과 문장

print(f"출력={"".join(filter_word)}")

LAB 9-3

#트위터 메세지 처리 
#입력
s = "It's Not The Right Time To Conduct Exams. MY DEMAND IN BOLD AND CAPITAL. NO EXAMS IN COVID!!!"
print(f"입력={s}")

#대문자 단어 개수
count = 0
for word in s.split():
    if( word == word.upper()):
        count += 1
print(f"대문자 단어의 수={count}")


#소문자로 바꾸고 구두점 제거_replace()
t =  s.lower()
t = t.replace("!","") #!->공백
t = t.replace(".","")#. -> 공백
t = t.replace("'","") #' -> 공백 
print(f"결과={t}")


#소문자로 바꾸고 구두점 제거_string
import string
punctuation_list = list(string.punctuation)

text = s.lower()
for mark in punctuation_list:
    text = text.replace(mark, ' ')

print(f"결과 ={text}")

 

LAB 9-4

s = "the auick brown fox jumps over the lazy dog."
print(f"입력={s}")

counter={}
words = s.split()
for word in words:
    if word in counter:
        counter[word] += 1
    else:
        counter[word] = 1

print(f"출력={counter}")

 


 

 

도전문제 9.1~9.3

9.1

s=input("이름을 입력하시오:")
#s='John Fitzgerald Kennedy'

s_list=s.split()
print(f"중간 이름은 : {s_list[1]}")

 

9.2

#소문자 먼저 출력 후 대문자 출력

s=input("문자열을 입력하시오: ")
#s='JoKenTive'

s_list=list(s)

#대소문자 각각 다른 리스트로 구분하기, 알파벳 하나하나
upper_list=[]
lower_list=[]

for i in s_list:
    if i==i.upper():
        upper_list.append(i)
    elif i==i.lower():
        lower_list.append(i)

#출력시 문자를 문자열로 만들기 
str_list=lower_list +upper_list

str_type=''
for i in str_list:
    str_type+=i

#출력
print(f"수정된 문자열{str_type}")

 

9.3

s=input("문자열을 입력하세요: ")
#s='JoP&*()193at25^^'
print("대소문자, 소문자, 숫자, 특수문자")

#문자열-> list
str_list=list(s)

#리스트 선언 
upper_list=[]
lower_list=[]
num_list=[]
punctuation_list=[]

#비교할 문자 
import string
punctuation=list(string.punctuation)
#punctuation = [i for i in string.punctuation]

num=[str(n) for n in range(1,10)]

lower=list(string.ascii_lowercase)
#lower = [i for i in string.ascii_lowercase]

upper=list(string.ascii_uppercase)
#upper = [i for i in string.ascii_uppercase]


#리스트에 분류해주기 
for i in str_list:
    if i in upper:
        upper_list.append(i)
    elif i in lower:
        lower_list.append(i)
    elif i in num:
        num_list.append(i)
    elif i in punctuation:
        punctuation_list.append(i)



#출력
print(f"대문자={len(upper_list)}")
print(f"소문자={len(lower_list)}")
print(f"숫자={len(num_list)}")
print(f"특수문자={len(punctuation_list)}")
728x90