简单的while循环直到Python中断

时间:2012-05-05 01:32:04

标签: python while-loop break

在用户输入“exit”之前,一个非常简单的while循环语句将继续下面的程序是什么?

例如,

while response = (!'exit')
    continue file
else
    break
    print ('Thank you, good bye!')
#I know this is completely wrong, but it's a try!

到目前为止我的文件:

#!/usr/bin/python
friends = {'John' : {'phone' : '0401',
        'birthday' : '31 July',
        'address' : 'UK',
        'interests' : ['a', 'b', 'c']},
    'Harry' : {'phone' : '0402',
        'birthday' : '2 August',
        'address' : 'Hungary',
        'interests' : ['d', 'e', 'f']}}
response = raw_input("Please enter search criteria, or type 'exit' to exit the program: ").split()
try:
    print "%s's %s is %s" % (response[0], response[1], friends[response[0]][response[1]])
except KeyError:
    print "Sorry, I don't know about that. Please try again, or type 'exit' to leave the program: "

3 个答案:

答案 0 :(得分:4)

continue是一个不需要参数的关键字。它只是告诉当前循环立即继续下一次迭代。它可以在whilefor循环中使用。

然后,您的代码应放在while循环中,该循环将一直持续到条件满足为止。您的条件语法不正确。它应该是while response != 'exit':。由于您使用的是条件,因此不需要continue语句。只要值不是"exit",它就会继续设计。

您的结构将如下所示:

response = ''
# this will loop until response is not "exit"
while response != 'exit':
    response = raw_input("foo")

如果您想使用continue,如果您要对响应执行其他各种操作,可能会使用它,并且可能需要提前停止并重试。 break关键字是一种类似于循环操作的方式,但它反过来说我们应该立即完全结束循环。您可能还有一些其他条件是交易破坏者:

while response != 'exit':
    response = raw_input("foo")

    # make various checks on the response value
    # obviously "exit" is less than 10 chars, but these
    # are just arbitrary examples
    if len(response) < 10:
        print "Must be greater than 10 characters!"
        continue  # this will try again 

    # otherwise
    # do more stuff here
    if response.isdigit():
        print "I hate numbers! Unacceptable! You are done."
        break

答案 1 :(得分:3)

您的while循环将继续,直到您设置的条件为false。所以你希望你的代码主要在这个循环中。完成后,您知道用户已进入“退出”状态,因此您可以打印错误消息。

#!/usr/bin/python
friends = {'John' : {'phone' : '0401',
        'birthday' : '31 July',
        'address' : 'UK',
        'interests' : ['a', 'b', 'c']},
    'Harry' : {'phone' : '0402',
        'birthday' : '2 August',
        'address' : 'Hungary',
        'interests' : ['d', 'e', 'f']}}

response = ['']
error_message = "Sorry, I don't know about that. Please try again, or type 'exit' to leave the program: "

while response[0] != 'exit':
    response = raw_input("Please enter search criteria, or type 'exit' to exit the program: ").split()
    try:
        print "%s's %s is %s" % (response[0], response[1], friends[response[0]][response[1]])
    except KeyError:
        print error_message
    except IndexError:
        print error_message

print ('Thank you, good bye!')

此代码是您想要的开始,但它仍然有一些错误。看看您是否可以对其进行重组,以便在用户进入“退出”时不会打印错误消息。

答案 2 :(得分:3)

#!/usr/bin/python
friends = {
    'John' : {
        'phone' : '0401',
        'birthday' : '31 July',
        'address' : 'UK',
        'interests' : ['a', 'b', 'c']
    },
    'Harry' : {
        'phone' : '0402',
        'birthday' : '2 August',
        'address' : 'Hungary',
        'interests' : ['d', 'e', 'f']
    }
}

def main():
    while True:
        res = raw_input("Please enter search criteria, or type 'exit' to exit the program: ")
        if res=="exit":
            break
        else:
            name,val = res.split()
            if name not in friends:
                print("I don't know anyone called {}".format(name))
            elif val not in friends[name]:
                print("{} doesn't have a {}".format(name, val))
            else:
                print("{}'s {} is {}".format(name, val, friends[name][val]))

if __name__=="__main__":
    main()