我无法从“重复项”中获得所需的答案
我制作了一个while循环,向用户询问几个问题,因为我希望调查再次结束,直到用户中断调查的输入为止。我做了一个函数,每个问题问完后,这个函数就会一直伴随着答案。 如果答案是“ break”(或“ hade”),则while循环应停止运行
def check_answer(element):
if str(element) == "break":
return exit()
此功能有效,因为退出所有功能,所以它不会让程序发布程序的统计信息。我发现我不允许这样做
return break
所以我不知道该怎么办。供参考,这里是完整的代码。其中一些是挪威语,但相关的部分是函数,while循环和打印语句(不会使用quit()打印的语句)
我还尝试使用True / False语句解决此问题,但未成功:
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)))
答案 0 :(得分:0)
只需返回一个布尔值来表示是否应该中断:
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循环作用域通信的唯一方法是返回一个值(此处为布尔值),其他代码可以在需要时解释并中断该值。
而且,正如Martijn所指出的那样,如果“中断功能”确实像一个if语句那样简单,那么将代码分解成该功能就没有必要而且过于复杂。相反,您应该只在for循环中使用该if语句。但是,我想您知道这是您的问题,这是关于如何从一个函数内部进行中断(如果该函数较长且具有更多功能)。
答案 1 :(得分:-1)
函数无法返回语句。相反,您可以让函数返回布尔值,并在代码中使用if
语句:
def check_answer(element):
return str(element) == "break"
# multiple times in your code
if check_answer(value):
break