在Python中循环不起作用

时间:2016-12-14 09:10:14

标签: python loops

我无法在这里使用while循环。我想要做的是让程序一旦运行就跳回“请输入你要翻译的单词”并提供输出。

当我在我认为合适的位置使用while truecontinue时,它会继续打印输出。我翻译的这个词。希望有道理。

下面列出的是我工作的代码。第二个块是我添加while循环并遇到问题的地方。

def silly_alpha():
    print("Looks like we're going with the Impossible alphabet.")
    word_trans = input('Please enter the word you wish to translate: ')
    if word_trans.isalpha():
        for letter in word_trans:
            print(impossible.get(letter.lower()), end=' ')
    else:
        print("There's no numbers in words. Try that again.")

这是有问题的代码

def silly_alpha():
    print("Looks like we're going with the Impossible alphabet.")
    while True:
        word_trans = input('Please enter the word you wish to translate: ')
        if word_trans.isalpha():
            for letter in word_trans:
                print(impossible.get(letter.lower()), end=' ')
                continue
        else:
            print("There's no numbers in words. Try that again.")
            continue

2 个答案:

答案 0 :(得分:1)

要让它重复循环,并接受要翻译的新单词,您只需删除那些continue语句。我在IDLE中进行了测试,它运行得很好。

def silly_alpha():
    print("Looks like we're going with the Impossible alphabet.")
    while True:
        word_trans = input('Please enter the word you wish to translate: ')
        if word_trans.isalpha():
            for letter in word_trans:
                print(impossible.get(letter.lower()), end=' ')
        else:
            print("There's no numbers in words. Try that again.")

然而,你现在有一个无限循环。您可能需要考虑允许用户输入将终止循环的命令的某种方式。也许是这样的事情:

def silly_alpha():
    print("Looks like we're going with the Impossible alphabet.")
    while True:
        word_trans = input('Please enter the word you wish to translate, "x" to cancel: ')
        if word_trans == 'x':
            print('Exiting translation...')
            break
        elif word_trans.isalpha():
            for letter in word_trans:
                print(impossible.get(letter.lower()), end=' ')
        else:
            print("There's no numbers in words. Try that again.")

答案 1 :(得分:1)

continue适用于最近的循环,并允许跳过此循环中的下一条指令。

所以你的第一个continue适用于for,因为它是循环的最后一条指令,它没有效果。

你的第二个continue适用于while True,因为它是循环的最后一条指令,它没有效果。

您要找的是break 终止最近的循环。在你的情况下,我想是while True

请删除第一个continue,然后用break替换第二个。