본문 바로가기
프로그램

[파이썬] 문제 : 단수명사 문자열 리스트에서 복수명사로 만들기

by 오디세이99 2023. 2. 20.
728x90
반응형

(문제)

3.      리스트 word=[ apple, ‘axes’, ‘book’, box, ‘buzz’, ‘cat’, cantus, ‘church’, dish, ‘knife’, lady, ‘leaf’,  pitch, ‘stimulus’, ‘taxi’, ‘wish’, wolf ]는 단수명사들로 구성된 리스트이다. 각 아이템들을 복수명사로 만들어, plural 라는 리스트에 추가한 후 그 결과를 출력 하시오. 복수명사를 만드는 기준은 다음과 같다.

 

a. 명사의 끝이 “y”이면 “y”를 제외하고 “ies”를 붙인다.

b. 명사의 끝이 “f, “fe” 이면 “f, “fe”를 제외하고 “ves”를 붙인다.

c. 명사가 “s, “x”, “z”, chsh” 로 끝나면es”를 붙인다.

d. 명사가 “us” 로 끝나면, “us”를 제외하고 “i”를 붙인다.

e. 위의 4가지 경우가 아니면 “s”를 붙인다.

 

 

(방법)

전부 확인을 하지는 못했습니다. 이런 식의 코드이니 수정하시면 되겠습니다.

저도 하다보니 2문자 확인 if 문이 먼저 와야 합니다. 'es'와 's'일때 s 가 먼저 수정하면 es가 수정이 되지 않기 때문 입니다.

리스트[-1]은 뒤에서 첫번째 요소 라는 뜻입니다. -2도 뒤에서 두번째 뜻

리스트[:-1]은 첫번째부터 뒤에서 첫번째 전까지 라는 뜻입니다. [:-2]도 처음부터 뒤에서 2번째 이전까지라는 뜻

리스트[-2:] 은 뒤에서 두번째 부터 끝까지라는 의미

word=['apple','axes','book','box','buzz'
      ,'cat','cantus','church','dish','knife'
      ,'lady','leaf','pitch','stimulus','taxi'
      ,'wish','wolf']

plural = []
for j in range(len(word)):
    if word[j][-2:] == 'ch' or word[j][-2:] == 'sh':
        w = word[j] + 'es'
        plural.append(w)
    elif word[j][-2:] == 'us':
        w = word[j][:-2] + 'i'
        plural.append(w)
    elif  word[j][-2:] == 'fe':
        w = word[j][:-2] + 'vas'
        plural.append(w)
    elif word[j][-1] == 'y':
        w = word[j][:-1] + 'ies'
        plural.append(w)
    elif word[j][-1] == 'f':
        w = word[j][:-1] + 'vas'
        plural.append(w)
    elif word[j][-1] == 's' or word[j][-1] == 'x' or word[j][-1] == 'z':
        w = word[j] + 'es'
        plural.append(w)
    else:
        w = word[j] + 's'
        plural.append(w)

for i in range(len(word)):
    print(f"단수명사 : {word[i]} / 복수명사 : {plural[i]}")

728x90
반응형

댓글