首页 > 解决方案 > Pig_Latin 大写

问题描述

问题:Pig Latin 是一个代码:-

  1. 在每个单词中添加“ay”。
  2. 如果单词以辅音开头,则将第一个字母移到末尾。
  3. 最终单词的首字母应为大写。

我的方法:我已经弄清楚了第一部分,但是当第一个字母大写时代码非常错误,它不会以相同的格式来做。应该发生的事情是新的第一个字母将大写,但事实并非如此(例如:Test --> Esttay)

我尝试使用 if 语句嵌套 word.capitalize() 的条件,但是,它没有成功,并将它与 else 语句混淆。我也尝试过创建一个单独的列表,但计算机总是把它弄糊涂。

这是我的代码:

sentence = input ("Type in your sentence here ")

consonants = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'] 

for word in sentence.split():
    first_letter = word [0]

    if first_letter in consonants :           
        pig = word [1:] + first_letter + "ay"
    else :
        pig = word + "ay"
    for word in sentence.split():
        if word.islower() == "false":
            print (pig.iscapitalize())
        else :
            print (pig)

预期的结果是代码可以自动将正确的位置大写(Test --> Esttay),但是,对于辅音,它会将其视为元音(Test --> Testay)。

感谢你们对我的帮助

标签: pythonpython-3.x

解决方案


以下是我解决的几个问题:

  • 不需要其他答案中提到的第二个循环。
  • 您还需要添加大写辅音
  • islower() == True 因为 True 是一个布尔值,islower() 返回布尔值。如果 islower() 返回 True 也可以工作,所以我只写了 islower()
  • 还要尝试理解 islower() 看不到第一个字母,但如果任何字母是大写字母,则返回 True。

sentence = input ("Type in your sentence here ")

consonants2 = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z']

consonants = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z']

# comment the below 3 lines if you don't need to change format for words which starts with capital consonant letter. I 
# I added it because of your example Testay and Esstay which somehow suggest me that you want that.
for i in consonants2:
    consonants.append(i.capitalize())


for word in sentence.split():
    first_letter = word[0]

    if first_letter in consonants :
        pig = word [1:] + first_letter + "ay"
    else :
        pig = word + "ay"
    if pig[0].islower():
        print(pig.capitalize())
    else:
        print(pig)


推荐阅读