循环重复,直到取消

时间:2012-01-31 16:30:13

标签: python

countries={'TW':'Taiwan','JP':'Japan','AUS':'Australia'}

def add_country():

    while True:
        new_short=raw_input('Country Name in short:')
        new_full=raw_input('Country Name in full:')
        countries[new_short]=new_full
        answer=raw_input('want to add more?')
        if answer in ('yes'):
            return True 
        if answer in ('no'):
            return False

    print countries

add_country()

我刚开始学习Python。以上代码不正确,有人可以帮我解决吗?基本上我只想在答案是肯定的情况下重复循环一次,或者如果答案为否则突然循环。返回True / False不会返回while循环?

6 个答案:

答案 0 :(得分:3)

它只需要一些小修正:

def add_country():

    while True:
        new_short=raw_input('Country Name in short:')
        new_full=raw_input('Country Name in full:')
        countries[new_short]=new_full
        answer=raw_input('want to add more?')
        if answer == 'no':
            return False
        print countries

add_country()

答案 1 :(得分:1)

您需要使用break命令退出循环。

countries={'TW':'Taiwan','JP':'Japan','AUS':'Australia'}

def add_country():

    while True:
        new_short=raw_input('Country Name in short:')
        new_full=raw_input('Country Name in full:')
        countries[new_short]=new_full
        answer=raw_input('want to add more?')
        if answer in ('yes'):
            answer = True
            break
        if answer in ('no'):
            answer = False
            break
        print countries        
        return answer


add_country()

答案 2 :(得分:0)

你需要打破循环而不是返回函数。

这将是:

if answer == 'yes':
    break
if answer == 'no':
    pass
    # do nothing

您不需要if answer == 'no'部分。 return语句将执行该函数。

答案 3 :(得分:0)

  • 使用break打破while循环:
  • 无需测试answer是否在('yes',)中,因为。{ 默认情况下,while True循环将继续循环:
  • answer in ('no')answer in 'no'相同,只有answer 如果'n''o''no'answer == 'no',则为True。那可能不是 你是什​​么意思。最好使用answer in ('no',)。如果您在('no',)中添加了逗号,那么answer将是一个元组,如果def add_country(): while True: new_short=raw_input('Country Name in short:') new_full=raw_input('Country Name in full:') countries[new_short]=new_full answer=raw_input('want to add more?') if answer == 'no': break print countries 等于元组中的某个项,则会满足条件。逗号在这里有很多意义!

{{1}}

答案 4 :(得分:0)

return终止该功能。要停止循环,请使用break

countries={'TW':'Taiwan','JP':'Japan','AUS':'Australia'}

def add_country():

    while True:
        new_short=raw_input('Country Name in short:')
        new_full=raw_input('Country Name in full:')
        countries[new_short]=new_full
        answer=raw_input('want to add more?')
        if answer != 'yes':
            break

    print countries

add_country()

请注意我是如何更改answer in ('no')的,因为它没有达到您的预期(它检查answer'n'还是'o')。

答案 5 :(得分:0)

在答案为“否”之前,您不希望return。返回将结束函数的执行。你想要continue循环。