1

我一直在尝试在 python 中使用猪拉丁语翻译器,并且我已经设置了一个 forloop 来循环遍历用户输入字符串的每个字符。为了测试 forloop 是否成功地捕捉到跟随初始辅音的所有辅音,直到它碰到元音(例如单词“string”中的“str”),我编写了一个 print 语句以打印出所有这些连续的辅音以辅音开头的词。不幸的是,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()
4

1 回答 1

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运算符返回第一个等价于真或0不存在的操作数。在这种情况下,'"a"' 等价于 true,因此它是整个表达式的结果。

您还需要添加:

else:
    break

if.

于 2013-08-26T22:25:14.117 回答