Python 从函数中断或继续while循环
我试着做一个while循环,问一系列问题,然后在最后一个问题被问到时重新开始。问题是,我希望用户能够通过在任何问题上键入特定单词来退出。我还希望循环中的代码尽可能少,因此if/elif语句放在函数中 我的问题是:我可以继续还是中断函数的循环 我的代码: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
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,您的代码没有正确缩进;您可以修复吗?您的代码没有正确缩进;您可以修复吗?