用户输入不被接受,当我按回车只是开始一个新行?

时间:2018-03-11 08:45:56

标签: python python-3.x

这是我的代码:

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')但是当我缩进它时我开始遇到这个问题

1 个答案:

答案 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: