Python 从函数中断或继续while循环

Python 从函数中断或继续while循环,python,while-loop,Python,While Loop,我试着做一个while循环,问一系列问题,然后在最后一个问题被问到时重新开始。问题是,我希望用户能够通过在任何问题上键入特定单词来退出。我还希望循环中的代码尽可能少,因此if/elif语句放在函数中 我的问题是:我可以继续还是中断函数的循环 我的代码: def check_gender(q): if q == "f": number_women = number_women + 1 elif q == "m": number_men = number

我试着做一个while循环,问一系列问题,然后在最后一个问题被问到时重新开始。问题是,我希望用户能够通过在任何问题上键入特定单词来退出。我还希望循环中的代码尽可能少,因此if/elif语句放在函数中

我的问题是:我可以继续还是中断函数的循环

我的代码:

def check_gender(q):
    if q == "f":
       number_women = number_women + 1
    elif q == "m":
        number_men = number_men + 1
    elif q == "foo":
        #break the loop
    else:
        print("Please answer M or F: ")
        q = input("Are you a male or female (M/F)? ").lower()
        check_gender(q)



def check_age(q):
    if not(16 <= int(q) <= 25):
        print("You are not in the age range for this survey")
    #Jump back to first question here
    if q == "foo":
        #break the loop

while True:
    gender = input("Are you a male or female (M/F)? ").lower()
    check_gender(gender)

    age = input("Please enter your age: ")
    check_age(age) 

    #And so on with questions
def检查性别(q):
如果q==“f”:
女性人数=女性人数+1
elif q==“m”:
人数=人数+1
elif q==“foo”:
#打破循环
其他:
打印(“请回答M或F:”)
q=输入(“你是男性还是女性(男/女)?”)。下()
检查性别(q)
def检查年龄(q):
如果不是(16,您可以从函数
check\u age(q)
返回一些(例如bool)值并进行检查

def check_age(q):
    if not(16 <= int(q) <= 25):
        print("You are not in the age range for this survey")
    #Jump back to first question here
    if q == "foo":
        return True
    else:
        return False
while True:
    gender = input("Are you a male or female (M/F)? ").lower()
    check_gender(gender)

    age = input("Please enter your age: ")
    if check_age(age):
        break 
def检查年龄(q):
如果不是(16,您可以从函数
check\u age(q)
返回一些(例如bool)值并进行检查

def check_age(q):
    if not(16 <= int(q) <= 25):
        print("You are not in the age range for this survey")
    #Jump back to first question here
    if q == "foo":
        return True
    else:
        return False
while True:
    gender = input("Are you a male or female (M/F)? ").lower()
    check_gender(gender)

    age = input("Please enter your age: ")
    if check_age(age):
        break 
def检查年龄(q):

如果不是(16你应该试试这个代码,是不是有人把其他字母放进去了,循环就会中断

def check_gender(q):
    if q == "f":
        number_women = number_women + 1
    elif q == "m":
        number_men = number_men + 1
    # elif q == "foo":
         #break the loop
    else:
        print("Please answer M or F: ")
        q = input("Are you a male or female (M/F)? ").lower()
        check_gender(q)



def check_age(q):
    if not(16 <= int(q) <= 25):
        print("You are not in the age range for this survey")
    #Jump back to first question here
    #if q == "foo":
        #break the loop

while True:
    gender = input("Are you a male or female (M/F)? ").lower()
    if gender != "f" and gender != "m":
        break
    else:
        check_gender(gender)

    age = input("Please enter your age: ")
    try:
        ageValue = int(age)
        check_age(age)
    except ValueError:
        print ("You must enter a number")
        break
def检查性别(q):
如果q==“f”:
女性人数=女性人数+1
elif q==“m”:
人数=人数+1
#elif q==“foo”:
#打破循环
其他:
打印(“请回答M或F:”)
q=输入(“你是男性还是女性(男/女)?”)。下()
检查性别(q)
def检查年龄(q):

如果不是(16你应该试试这个代码,是不是有人把其他字母放进去了,循环就会中断

def check_gender(q):
    if q == "f":
        number_women = number_women + 1
    elif q == "m":
        number_men = number_men + 1
    # elif q == "foo":
         #break the loop
    else:
        print("Please answer M or F: ")
        q = input("Are you a male or female (M/F)? ").lower()
        check_gender(q)



def check_age(q):
    if not(16 <= int(q) <= 25):
        print("You are not in the age range for this survey")
    #Jump back to first question here
    #if q == "foo":
        #break the loop

while True:
    gender = input("Are you a male or female (M/F)? ").lower()
    if gender != "f" and gender != "m":
        break
    else:
        check_gender(gender)

    age = input("Please enter your age: ")
    try:
        ageValue = int(age)
        check_age(age)
    except ValueError:
        print ("You must enter a number")
        break
def检查性别(q):
如果q==“f”:
女性人数=女性人数+1
elif q==“m”:
人数=人数+1
#elif q==“foo”:
#打破循环
其他:
打印(“请回答M或F:”)
q=输入(“你是男性还是女性(男/女)?”)。下()
检查性别(q)
def检查年龄(q):

如果不是(16最好的方法可能是从问题函数内部引发自定义异常,如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

NUMBER_MEN, NUMBER_WOMEN = 0, 0


class ExitLoop(Exception):

    pass


def check_gender(reply):
    global NUMBER_WOMEN, NUMBER_MEN
    while True:
        if reply == "f":
            NUMBER_WOMEN += 1
            return
        elif reply == "m":
            NUMBER_MEN += 1
            return
        elif reply == "foo":
            raise ExitLoop
        else:
            print("Please answer M or F: ")
            reply = input("Are you a male or female (M/F)? ").lower()


def check_age(reply):
    if reply == "foo":
        raise ExitLoop
    if not 16 <= int(reply) <= 25:
        print("You are not in the age range for this survey")
        return False
    return True


while True:
    try:
        gender = input("Are you a male or female (M/F)? ").lower()
        check_gender(gender)

        age = input("Please enter your age: ")
        inrange = check_age(age)
        if not inrange:
            continue
    except ExitLoop:
        break
!/usr/bin/env python
#-*-编码:utf-8-*-
男性人数,女性人数=0,0
类ExitLoop(异常):
通过
def检查性别(答复):
全球女性人数,男性人数
尽管如此:
如果回复==“f”:
女性人数+=1
返回
elif reply==“m”:
人数+=1人
返回
elif reply==“foo”:
上升出口回路
其他:
打印(“请回答M或F:”)
回复=输入(“您是男性还是女性(男/女)?”)。下()
def检查(答复):
如果回复==“foo”:
上升出口回路

如果不是16最好的方法可能是从问题函数内部引发自定义异常,如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

NUMBER_MEN, NUMBER_WOMEN = 0, 0


class ExitLoop(Exception):

    pass


def check_gender(reply):
    global NUMBER_WOMEN, NUMBER_MEN
    while True:
        if reply == "f":
            NUMBER_WOMEN += 1
            return
        elif reply == "m":
            NUMBER_MEN += 1
            return
        elif reply == "foo":
            raise ExitLoop
        else:
            print("Please answer M or F: ")
            reply = input("Are you a male or female (M/F)? ").lower()


def check_age(reply):
    if reply == "foo":
        raise ExitLoop
    if not 16 <= int(reply) <= 25:
        print("You are not in the age range for this survey")
        return False
    return True


while True:
    try:
        gender = input("Are you a male or female (M/F)? ").lower()
        check_gender(gender)

        age = input("Please enter your age: ")
        inrange = check_age(age)
        if not inrange:
            continue
    except ExitLoop:
        break
!/usr/bin/env python
#-*-编码:utf-8-*-
男性人数,女性人数=0,0
类ExitLoop(异常):
通过
def检查性别(答复):
全球女性人数,男性人数
尽管如此:
如果回复==“f”:
女性人数+=1
返回
elif reply==“m”:
人数+=1人
返回
elif reply==“foo”:
上升出口回路
其他:
打印(“请回答M或F:”)
回复=输入(“您是男性还是女性(男/女)?”)。下()
def检查(答复):
如果回复==“foo”:
上升出口回路

如果不是16,您的代码没有正确缩进;您可以修复吗?您的代码没有正确缩进;您可以修复吗?