这是我的代码:
v = 0
eng = ""
pig = ""
movetoend = ""
vowels = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"]
while eng != "Quit this program":
eng = input("input english: ")
listeng = eng.split()
if eng == "Quit this program":
break
for word in listeng:
if word[0] != ("a" or "e" or "i" or "o" or "u" or "A" or "E" or "I" or "O" or "U"):
while v == 0:
for l in word:
if l != ("a" or "e" or "i" or "o" or "u" or "A" or "E" or "I" or "O" or "U"):
movetoend = movetoend + l
else:
v=1
pig = pig + l
pig = pig + movetoend + "ay"
else:
length = len(eng)
pig = eng[1:length] + "ay"
print("pig latin is: " + pig)
print("program closed")
代码尚未完成,我知道它不起作用(它适用于非常基本的猪拉丁转换器),但我的问题是,为什么当我尝试运行此代码时不再接受我的用户输入,只是将光标移动到下一行?
当我意识到我忘记缩进时,这个问题就开始发生了
else:
v=1
pig = pig + l
足够(它符合' for'上面而不是' if')但是当我缩进它时我开始遇到这个问题
答案 0 :(得分:0)
有几件事。
不需要IndirectUnaryPredicate
循环来完成该函数并将其置于无限循环中。
其他一些编辑。
您不必拥有列表while
..只需使用
xxx or xxx or xxx or xxx
这将检查列表中的每个字母。
在python中,你可以使用if word[0] in vowels:
加在一起。
+=
对于第二个v += 1
pig += l `
循环,while
可以替换为while v == 0
语句,因为if
循环已经在迭代。
for
您可以将其包装在类似的函数中,以便使代码更易于使用
if v == 0: