>

입력으로 단어를 소문자로 요청하고 단어를 Pig Latin로 변환하는 Python 프로그램을 작성해야합니다. • 단어를 Pig Latin로 번역하는 규칙은 다음과 같습니다. a) 단어가모음으로 시작하면 단어 끝에 길을 추가하십시오. 예를 들어, 그렇지 않으면 그렇지 않습니다. b) 단어가자음그룹으로 시작하는 경우 단어의 끝으로 이동하고 ay를 추가하십시오. 예를 들어, 칩이 ipchay가됩니다.

현재 코딩 :

word = input("Enter word to translate: ")
#if the 1st letter of a word is "aeiou", add "way" to the end of the word 
if word[0] == "a" or "e" or "i" or "o" or "u":  
    print(word + "way")
elif word[0] and word[1] == "b" or "c" or "d" or "f" or "g" or "h" or "j" or "k" or "l" or "m" or "n" or "p" or "q" or "r" or "s" or "t" or "v" or "x" or "y" or "z":
    print(word + "ay")

현재의 코딩은 단어의 첫 글자가 모음인지 자음인지에 관계없이 단어 끝에 "ways"를 추가 한 단어 만 표시하므로 문제가있는 것 같습니다. 또한 단어의 자음 그룹 인 경우 단어의 첫 글자를 단어의 끝으로 이동하는 방법을 잘 모르겠으며 단어의 첫 글자와 두 번째 글자가 자음과 같은 경우 어떻게 처리해야하는지 모르겠습니다. "zh", "ch"등

이 Python 프로그램의 예상 결과 : 번역 할 단어를 입력하십시오 : else Pig Latin의 단어는 그렇지 않다. 번역 할 단어를 입력하십시오 : chip Pig Latin의 단어는 ipchay입니다.

  • 답변 # 1

    파이썬이 당신의 if 를 해석하는 방식  진술은 당신이 생각하는 방식이 아닙니다.

    if word[0] == "a" or "e"
    
    

    네가 생각하는 것 :

    if word[0] == ("a" or "e")
    
    

    그러나 실제로는 다음과 같이 처리됩니다

    if (word[0] == "a") or ("e"):
    
    

    따라서 "e"(혹은 비어 있지 않은 문자열)는 파이썬에 의해 항상 True로 평가되므로 항상 'way'를 추가 할 것이기 때문에 단어 [0]에 실제로 포함 된 내용은 중요하지 않습니다.

    if 를 다시 쓰는 가장 쉬운 방법  입니다

    if word[0] in "aeiou":
    
    

    "aeiou"라는 문자열에 나타나는지 확인하여 모음인지 실제로 확인합니다.

  • 답변 # 2

    'or'가 생각한대로 작동하지 않습니다. 왼쪽에있는 것이 True인지, 그렇지 않은 경우 오른쪽에있는 것이 True인지 확인합니다. 이 중 하나라도 True이면 'or'가 True를 반환하고, 그렇지 않으면 False를 반환합니다. 코드에서 문자는 부울로 변환되고 항상 True를 제공합니다. 따라서 '또는'의 오른쪽에는 항상 True가 있습니다. 즉, 첫 번째 'if'가 항상 작동합니다.

  • 답변 # 3

    이것은 가장 파이썬적인 대답은 아니지만 ...

    elif를 사용하는 경우 : 첫 번째 문장에 추가하는 것입니다. 이것이 항상 끝에 추가하는 이유입니다

    elif를 사용하여 각 모음을 해결 한 다음 else 문을 자음 처리 :

    vowels = ['a','e','i','o','u']
    consonants = ['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z']
    word = input("Enter word to translate: ")
    #if the 1st letter of a word is "aeiou", add "way" to the end of the word 
    if word[0] in vowels:
        print(word + "way")
    elif word[0] and word[1] in consonants:  
        print(word[2:] + word[0:2] + "ay") 
    else:
        print(word[1:] + word[0] + 'ay')
    
    

관련 자료

  • 이전 완전히 업데이트 된 azerothcore 다운로드에서 도커 작성 버전 충돌이 발생하는 이유는 무엇입니까?
  • 다음 angularjs - Auth0/Angular2-Jwt가 Angular 5와 작동하지 않습니다