Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的调查/如何允许用户突破调查_Python_Function_Break_Survey - Fatal编程技术网

python中的调查/如何允许用户突破调查

python中的调查/如何允许用户突破调查,python,function,break,survey,Python,Function,Break,Survey,我无法从“副本”中得到我需要的答案 我做了一个while循环,询问用户几个问题,因为我希望调查再次运行,直到用户输入的调查结果中断。我做了一个函数,在每个问题之后,这个函数都会和答案一起运行。 如果答案是“break”(或“hade”),while循环应该停止运行 def check_answer(element): if str(element) == "break": return exit() 这个函数工作时,把它不让程序统计出来的程序,由于一起退出。我发现我是不被允许的 ret

我无法从“副本”中得到我需要的答案

我做了一个while循环,询问用户几个问题,因为我希望调查再次运行,直到用户输入的调查结果中断。我做了一个函数,在每个问题之后,这个函数都会和答案一起运行。 如果答案是“break”(或“hade”),while循环应该停止运行

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我的重点是演示逻辑!当然,代码永远不会这么简单,但是
应该中断
函数将包含更多