首页 > 解决方案 > 调查代码,来自另一个 if 语句的 if 语句

问题描述

我正在进行一项调查,我在其中提出了一个问题,如果该问题的回答为否,则应该转到该问题。

但是,因为它是 if 语句上的 if 语句,所以它给了我错误名称未定义。

这是一个学校项目,我需要编写一个调查,但我在谷歌上找不到修复。

   antwoord4 = []
file = open("antwoord4.txt" , "a")

vraagCorrect = True
while vraagCorrect:
  vraag4 = input("Heeft u wel eens iets moeten opzoeken op het internet?(ja/nee) ")
  if vraag4 == "ja":
    vraagCorrect = False
  elif vraag4 == "nee":
    vraagCorrect = False
  else:
    print("Dit is geen correct antwoord, antwoord aub met een ja of nee. ")

antwoord4.append(vraag4)

antwoord41 = []
file = open("antwoord41.txt" , "a")
if vraag4 == "ja":
  vraag41 = input("Waarvoor moest u iets opzoeken?(vrij antwoord)")
  antwoord41.append(vraag41)

file.write(str(antwoord41))
file.write("\n")

antwoord42 =[]
file = open("antwoord42.txt", "a")

if vraag4 == "nee":
  vraagCorrect = True
  while vraagCorrect:
    vraag42 = input("Leest u ooit bronnen op het internet?(ja/nee) ")
    if vraag42 == "ja":
      vraagCorrect = False
    elif vraag42 == "nee":
      vraagCorrect = False
    else:
      print("Dit is geen correct antwoord, gebruik aub ja of nee")
  antwoord42.append(vraag42)
file.write(str(antwoord42))
file.write("\n")

if vraag42 == "nee":
  vraagCorrect = True
  while vraagCorrect:
    vraag1000 = input("Dankuwel, wij hebben alle info die we moeten hebben. U kunt dit tablad sluiten en hoeft deze vraag niet te beantwoorden. ")
    if vraag1000 == "alleen u leest dit dus niemand zal dit invullen":
      vraagCorrect = False
    elif vraag1000 == "Ik vond dit alleen de makkelijkste manier om geen nutteloze antwoorden te krijgen":
      vraagCorrect = False
    else:
      print("\n")

如果有人回答是,我希望它能够被跳过,但在我到达它之前,代码给出了一个错误,会停止整个调查。

它给出了一个名称“vraag42”未定义错误。

标签: python-3.6

解决方案


看看你的逻辑。这是我最好的猜测,因为缺少代码并且没有提供错误回溯来告诉错误发生在哪一行。if如果第一个为假,这些是执行的行:

if vraag4 == "no":          # assume this is false
  ...                       # skip body of if
file.write(str(antwoord42)) # (missing code, so I assume antwoord42 was defined earlier)
file.write("\n")

if vraag42 == "no":         # vraag42 was defined in the skipped if body, so "not defined error".

推荐阅读