我运行的这个python代码在运行它时只返回一个空字符串

时间:2014-03-25 02:06:52

标签: python

我尝试过这句话......"你会说猪拉丁语吗?"

def igpay(sentence):
    alist = sentence.split(" ")
    NewSentence = ""
    vowels = "aeoiu"
    cons = "qwrtypsdfghjklzxcvbnm"
    for i in range(len(alist)):
        c = alist[i]
        if c[0] in vowels:
            a = c + "way"
            NewSentence += a
        elif c[0] not in vowels:
            for j in range(len(c)):
                f = c[j]
                if f in cons:
                    o = c.replace(c[j],"")
                    a = c[j:j+1]
                    b = o + a
                    if f in vowels:
                        v = b + "ay"
                        NewSentence += v
    return(NewSentence)

1 个答案:

答案 0 :(得分:2)

您没有看到任何内容的原因是,NewSentence +=的任何一行都没有到达。

永远不会达到第一行,因为没有以元音开头的单词。

永远不会达到第二行,因为除非if f in vowels已知为真,否则永远不会执行测试if f in cons。我想你可能在这里有缩进错误。

其他几点说明:

  • 您的两个for语句可以更清晰地写为for word in alist:for ltr in word:(我使用变量word代替c,因为我认为它更清晰) 。您不需要循环整数值,然后根据该变量进行索引。
  • 您最外面的if/elif对可以更清楚地写成if/else。没有其他可能的执行途径。
  • 对于大写字母,您的in vowelsin cons语句将失败。
  • 您的replace()调用将替换元音的所有实例,而不仅仅是第一个。 (我不完全确定你在这里要做什么,是否要剥掉最初的辅音并把它放在最后?)