python中的调查/如何允许用户突破调查
我无法从“副本”中得到我需要的答案 我做了一个while循环,询问用户几个问题,因为我希望调查再次运行,直到用户输入的调查结果中断。我做了一个函数,在每个问题之后,这个函数都会和答案一起运行。 如果答案是“break”(或“hade”),while循环应该停止运行python中的调查/如何允许用户突破调查,python,function,break,survey,Python,Function,Break,Survey,我无法从“副本”中得到我需要的答案 我做了一个while循环,询问用户几个问题,因为我希望调查再次运行,直到用户输入的调查结果中断。我做了一个函数,在每个问题之后,这个函数都会和答案一起运行。 如果答案是“break”(或“hade”),while循环应该停止运行 def check_answer(element): if str(element) == "break": return exit() 这个函数工作时,把它不让程序统计出来的程序,由于一起退出。我发现我是不被允许的 ret
def check_answer(element):
if str(element) == "break":
return exit()
这个函数工作时,把它不让程序统计出来的程序,由于一起退出。我发现我是不被允许的
return break
所以我不知道该怎么办。以下是完整的代码供参考。其中一些是挪威语,但相关部分是函数、while循环和print语句(使用quit()无法打印的语句)
我还尝试使用正确/错误的声明来解决此问题,但我没有成功:
def sjekk_svar(element):
if str(element) == "hade":
global to_continue
to_continue = False
return to_continue
如前所述,这是行不通的。以下是完整的代码:
def sjekk_svar(element):
if str(element) == "hade":
return quit()
while to_continue == True:
# Sex
kjonn = input("Er du mann eller kvinne? ")
*sjekk_svar(kjonn) # Calling the function
while kjonn != "mann" and kjonn != "kvinne":
kjonn = input("Er du mann eller kvinne? ")
sjekk_svar(kjonn) # Calling the function
if kjonn != "mann" and kjonn != "kvinne":
print("Feil input. Vennligst oppgi kjønn som mann eller kvinne")
# Age
alder = input("Hva er alderen din? ")
sjekk_svar(alder) # Calling the function
if (int(alder) > intervall_high or int(alder) < intervall_low):
print("Du er ikke innenfor aldersgruppen til denne undersøkelsen. Vennligst gi PC-en til noen andre.")
# Q1, 2 ,3
fag = input("Tar du noen universitetsfag? [ja/nei] ")
sjekk_svar(fag) # Calling the function
if fag == "ja" and int(alder) < 22:
itgk_medlem = input("Tar du faget ITGK? ")
sjekk_svar(itgk_medlem) # Calling the function
elif fag == "ja" and int(alder) >= 22:
itgk_medlem = input("Tar virkelig du ITGK? ")
sjekk_svar(itgk_medlem) # Calling the function
timer_lekser = input("Hvor mange timer om dagen bruker du i snitt på lekser? ")
sjekk_svar(timer_lekser) # Calling the function
# Start over again
print("Velkommen til ny spørreundersøkelse!")
# Assigning values of amount of surveys completed
ant_fag +=1
ant_timer += int(timer_lekser)
if kjonn == "mann":
menn += 1
if kjonn == "kvinne":
kvinner += 1
if itgk_medlem == "ja":
ant_itgk += 1
# Printing the statistics
print("Resultatet av spørreundersøkelsen er som følger:")
print("Antall kvinner:", str(kvinner))
print("Antall menn:", str(menn))
print("Antall personer som tar et fag:", str(fag))
print("Antall personer som tar ITGK:", str(ant_itgk))
print("Antall timer i snitt brukt på lekser:", str(ant_timer/(kvinner+menn)))
def sjekk_svar(元素):
如果str(元素)=“hade”:
返回退出()
而要继续==真:
#性
kjonn=输入(“Er du mann eller kvinne?”)
*sjekk_svar(kjonn)#调用函数
而克琼恩!=“mann”和kjonn!=“kvinne”:
kjonn=输入(“Er du mann eller kvinne?”)
sjekk_svar(kjonn)#调用函数
如果kjonn!=“mann”和kjonn!=“kvinne”:
打印(“Feil input.Vennligst oppgiønn som mann eller kvinne”)
#年龄
alder=输入(“Hva er alderen din?”)
sjekk_svar(alder)#调用函数
如果(内部(桤木)>间隔高或内部(桤木)<间隔低):
印刷品(“在奥尔德斯格鲁彭到丹尼·安德尔森之间,在诺恩·安德烈之前,我一直在看我的电脑。”)
#问题1、2、3
fag=输入(“塔杜诺恩大学fag?[ja/nei]”)
sjekk_svar(fag)#调用函数
如果fag==“ja”且int(alder)<22:
itgk_medlem=输入(“Tar du faget itgk?”)
sjekk_svar(itgk_medlem)#调用函数
elif fag==“ja”和int(alder)>=22:
itgk_medlem=输入(“Tar virkelig du itgk?”)
sjekk_svar(itgk_medlem)#调用函数
timer_lekser=输入(“是否管理snitt pålekser的计时器?”)
sjekk_svar(timer_lekser)#调用函数
#重新开始
印刷品(“直到纽约斯珀雷恩斯!”
#分配已完成调查数量的值
ant_fag+=1
ant_timer+=int(timer_lekser)
如果kjonn==“mann”:
menn+=1
如果kjonn==“kvinne”:
kVINER+=1
如果itgk_medlem==“ja”:
ant_itgk+=1
#打印统计数据
打印(“Resultate av spørreundersøkelsen er som følger:”)
打印(“Antall kvinner:,str(kvinner))
打印(“全部菜单:,str(菜单))
打印(“安塔勒员工姓名和fag:,str(fag))
印刷品(“安塔勒员工姓名:”,str(ant_ITGK))
打印(“Antall timer i snitt brukt pålekser:”,str(ant_timer/(kvinner+menn)))
函数无法返回语句。相反,您可以让函数返回布尔值,并在代码中使用if
语句:
def check_answer(element):
return str(element) == "break"
# multiple times in your code
if check_answer(value):
break
函数不能返回语句。相反,您可以让函数返回布尔值,并在代码中使用
if
语句:
def check_answer(element):
return str(element) == "break"
# multiple times in your code
if check_answer(value):
break
只需返回一个布尔值,以指示是否应中断:
def should_i_break(value):
if value:
return True
return False
for i in range(10):
print(i)
if should_i_break(i == 6):
break
或者,更简单地说
def should_i_break(value):
return value == 6
for i in range(10):
print(i)
if should_i_break(i):
break
其中给出:
0
1
2
3
4
5
6
我认为函数是接受输入、执行任务和可能返回值的“黑箱”。由于无法输入您在for循环中,因此函数无法知道它是否在for循环中,因此它无法跳出for循环。因此,与for循环作用域通信的唯一方法是返回一个值(这里是布尔值),其他代码可以在必要时解释并中断该值
而且,正如Martijn所指出的,如果“中断函数”真的像一个if语句一样简单,那么将代码分解成该函数是不必要的,也是过于复杂的。相反,您应该在for循环中使用if语句。但是,我想您知道,您的问题是关于如何从函数内部中断(如果函数较长且具有更多功能)。只需返回一个布尔值来表示是否应该中断:
def should_i_break(value):
if value:
return True
return False
for i in range(10):
print(i)
if should_i_break(i == 6):
break
或者,更简单地说
def should_i_break(value):
return value == 6
for i in range(10):
print(i)
if should_i_break(i):
break
其中给出:
0
1
2
3
4
5
6
我认为函数是接受输入、执行任务和可能返回值的“黑箱”。由于无法输入您在for循环中,因此函数无法知道它是否在for循环中,因此它无法跳出for循环。因此,与for循环作用域通信的唯一方法是返回一个值(这里是布尔值),其他代码可以在必要时解释并中断该值
而且,正如Martijn所指出的,如果“中断函数”真的像一个if语句一样简单,那么将代码分解成该函数是不必要的,也是过于复杂的。相反,您应该在for循环中使用if语句。然而,我想你知道这是一个你的问题,你的问题是关于如何从一个函数内部中断(如果函数更长,并且有更多的功能)。如果I==6:break,为什么不直接使用
?对于已经是布尔值的对象,不要使用返回True
/返回False
。因此,是的,虽然这是一个函数的超级简单示例,解决了函数中不能使用中断的问题,这也是一种不好的做法,至少应该避免整个if boolean:return True
/否则:return False
反模式。@MartijnPieters我的重点是演示逻辑!当然,代码永远不会这么简单,但是应该中断
函数将包含更多