for python pig latin translator中的循环

时间:2013-08-26 22:17:53

标签: python

我一直在尝试在python中使用猪拉丁语翻译器,我已经设置了一个forloop来遍历用户输入字符串的每个字符。为了测试forloop是否成功捕获了跟随初始辅音的所有辅音,直到它碰到元音(例如“string”中的“str”),我写了一个打印声明来打印出所有这些连续的辅音。以辅音开头的单词。不幸的是,forloop只省略了字母“a”,但允许打印元音“e”“i”“o”和“u”。

所以我的问题是如何修复此代码,以便只有第一个辅音字符串直到输入单词的第一个元音?

我并没有特别配备语言来描述我这样做的过程,但希望这个请求足够近似,有助于表达问题的本质。感谢。

代码:

def translate():
     print("Welcome to the Pig Latin Translator")
     original=raw_input("What word would you like to translate?")
     length=len(original)
     move_letters=""
     index=0
     for i in range(length):
        if original[i]!=("a" or "e" or "i" or "o" or "u"):
            print(original[i])
            move_letters=move_letters+original[i]
            index+=1


translate()

1 个答案:

答案 0 :(得分:1)

表达式

("a" or "e" or "i" or "o" or "u")

相当于"a"。这就是您的代码仅捕获"a"的原因。你需要写:

if not original[i] in ("a","e","i","o","u") :

if original[i] != "a" and original[i] != "e" and original[i] != "i" and original[i] != "o" and original[i] != "u" :

("a" or "e" or "i" or "o" or "u")等同于"a"的原因是,根据其定义,or运算符返回等效于true的第一个操作数或0没有。在这种情况下,'“a”'等同于true,因此它是整个表达式的结果。

您还需要添加:

else:
    break

if