我一直在尝试在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()
答案 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
。