【问题标题】:for and while loop combinedfor 和 while 循环组合
【发布时间】:2020-09-18 05:32:40
【问题描述】:

我正在尝试为我的问题构造列表添加一段时间。我希望 python 只允许诸如“helemaal mee oneens、mee oneens 等)之类的答案。

我知道我是如何用简单的代码做到这一点的。但我不知道如何让所有这些问题只接受我想要的答案的输入。

有原始输入,所以人们必须能够输入他们的答案。我试过这个:
for Vragenlijst_vriendelijkheid in (list(range(0,8))):
 while Vragenlijst_vriendelijkheid (list(range(0,8))) != "Helemaal niet mee eens" and != "Niet mee eens" and != "Neutraal" and != "Mee eens" and != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antwoord dient precies overgenomen te worden.")

结果不太好.. 它只是打印了很多“het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden”。有谁能够帮我? 我不擅长编程,我必须为学校作业做这个,我真的不明白..

while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
  print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
  Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
  if Welk_construct == ("vriendelijkheid"): 
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
  elif Welk_construct == ("consciëntieusheid"): 
     Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
     Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
     Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
     Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
     Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
     Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
     Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
     Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
  elif Welk_construct == ("autonomie"):
     Antwoord_A1 = input (Vragenlijst_autonomie [0])
     Antwoord_A2 = input (Vragenlijst_autonomie [1])
     Antwoord_A3 = input (Vragenlijst_autonomie [2])
     Antwoord_A4 = input (Vragenlijst_autonomie [3])
     Antwoord_A5 = input (Vragenlijst_autonomie [4])
     Antwoord_A6 = input (Vragenlijst_autonomie [5])
     Antwoord_A7 = input (Vragenlijst_autonomie [6])
     Antwoord_A8 = input (Vragenlijst_autonomie [7])
  elif Welk_construct == ("extraversie"):
     Antwoord_E1 = input (Vragenlijst_extraversie [0])
     Antwoord_E2 = input (Vragenlijst_extraversie [1])
     Antwoord_E3 = input (Vragenlijst_extraversie [2])
     Antwoord_E4 = input (Vragenlijst_extraversie [3])
     Antwoord_E5 = input (Vragenlijst_extraversie [4])
     Antwoord_E6 = input (Vragenlijst_extraversie [5])
     Antwoord_E7 = input (Vragenlijst_extraversie [6])
     Antwoord_E8 = input (Vragenlijst_extraversie [7])
  elif Welk_construct == ("emotionele stabiliteit"):
     Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
     Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
     Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
     Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
     Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
     Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
     Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
     Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])

这是整个文件:

# antwoorden demografische vragen
Naam = ("onbekend")
Geslacht = ("onbekend")
Leeftijd = ("onbekend")

# overige vragen
Welk_construct = ("onbekend")
Nog_een = ("onbekend")

# antwoorden Vragenlijst_vriendelijkheid
Antwoord_V1 = ("onbekend")
Antwoord_V2 = ("onbekend")
Antwoord_V3 = ("onbekend")
Antwoord_V4 = ("onbekend")
Antwoord_V5 = ("onbekend")
Antwoord_V6 = ("onbekend")
Antwoord_V7 = ("onbekend")
Antwoord_V8 = ("onbekend")

# antwoorden Vragenlijst_consiëntieusheid
Antwoord_C1 = ("onbekend")
Antwoord_C2 = ("onbekend")
Antwoord_C3 = ("onbekend")
Antwoord_C4 = ("onbekend")
Antwoord_C5 = ("onbekend")
Antwoord_C6 = ("onbekend")
Antwoord_C7 = ("onbekend")
Antwoord_C8 = ("onbekend")

# antwoorden Vragenlijst_autonomie
Antwoord_A1 = ("onbekend")
Antwoord_A2 = ("onbekend")
Antwoord_A3 = ("onbekend")
Antwoord_A4 = ("onbekend")
Antwoord_A5 = ("onbekend")
Antwoord_A6 = ("onbekend")
Antwoord_A7 = ("onbekend")
Antwoord_A8 = ("onbekend")

# antwoorden Vragenlijst_extraversie
Antwoord_E1 = ("onbekend")
Antwoord_E2 = ("onbekend")
Antwoord_E3 = ("onbekend")
Antwoord_E4 = ("onbekend")
Antwoord_E5 = ("onbekend")
Antwoord_E6 = ("onbekend")
Antwoord_E7 = ("onbekend")
Antwoord_E8 = ("onbekend")

# antwoorden Vragenijst_emotionele_stabiliteit
Antwoord_ES1 = ("onbekend")
Antwoord_ES2 = ("onbekend")
Antwoord_ES3 = ("onbekend")
Antwoord_ES4 = ("onbekend")
Antwoord_ES5 = ("onbekend")
Antwoord_ES6 = ("onbekend")
Antwoord_ES7 = ("onbekend")
Antwoord_ES8 = ("onbekend")


# vragenlijsten

Demografische_vragen = (["Wat is uw naam? Typ hier uw naam.", "Wat is uw geslacht? Typ hier Man, Vrouw of Anders.", "Wat is uw leeftijd? Typ hier uw leeftijd in jaren."])

Vragenlijst_vriendelijkheid = (["Vraag V1: Ik heb vertrouwen in anderen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", " Vraag V2: Ik gebruik en manipuleer anderen om mijn zin te krijgen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V3: Ik help anderen graag. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraaga V4: Ik hou van strijd en een stevige discussie. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V5: Ik vind mezelf beter dan anderen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V6: Ik heb medelijden met daklozen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V7: Ik denk dat mensen in principe goede bedoelingen hebben. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V8: Ik vind het niet erg om te bedriegen om hogerop te komen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_consciëntieusheid = (["Vraag C1: Ik breng taken tot een goed einde. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C2: Ik hou niet van wandorde en ruim graag op. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C3: Ik hou mijn beloftes. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C4: Ik ben een harde werker. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C5: Ik ben altijd voorbereid. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C6: Ik ben erg spontaan en reageer zonder na te denken. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C7: Ik doe de dingen die k doe altijd goed. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C8: Ik vergeet vaak dingen op de juiste plaats terug te leggen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_autonomie = (["Vraag A1: Ik heb een levendige fantasie. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A2: Ik vind kunst belangrijk. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A3: Ik ervaar sterke en gevarieerde emoties. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A4: Ik verkies afwisseling oven routine. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A5: Ik lees graag uitdagende boeken en artikelen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A6: Ik verkies politiek die voor verandering is en progressief. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A7: Ik laat mijn verbeelding graag de vrije loop. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A8: Ik zie de schoonheid van dingen die anderen niet opvallen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_extraversie = (["Vraag E1: Ik maak gemakkelijk vrienden. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E2: Ik hou van grote feesten en bijeenkomsten. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E3: Ik neem graag de leiding in situaties en bij gebeurtenissen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E4: Ik heb moeite om anderen te benaderen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E5: Ik hou van opwinding en spanning. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E6: Ik ben een heel vrolijk persoon. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E7: Ik voel me op mijn gemak bij andere mensen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E8: Ik praat met veel verschillende mensen op feestjes. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_emotionele_stabiliteit = (["Vraag ES1: Ik maak me veel zorgen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES2: Ik word snel boos. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES3: Ik voel me vaak verdrietig. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES4: Ik laat me regelmatig gaan wat betreft genieten. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES5: Ik ben snel in paniek. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES6: Ik vrees vaak het ergste.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES7: Ik ben altijd bezig en druk met dingen.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES8: Ik raak snel geïrriteerd.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens." ])



# demografische vragen
print ("Hallo! Voordat we met de vragenlijst gaan beginnen, komen er een paar vragen over u. Zo kunnen we uw gegevens het best verwerken.")
Naam = input (Demografische_vragen [0])

while Geslacht != "Man" and Geslacht != "man" and Geslacht != "Vrouw"  and Geslacht != "vrouw"and Geslacht != "Anders" and Geslacht != "anders":
  Geslacht = input (Demografische_vragen [1])

invalide = True
while invalide:
  Leeftijd = int (input (Demografische_vragen [2]))
  if Leeftijd >=16 and Leeftijd <=99:
    invalide= False
  else:
    print ("Sorry" ,(Naam),", je moet tussen de 16 en 99 zijn")



# intro vragenlijst
print ("Welkom" ,(Naam),", je gaat nu een vragenlijst invullen voor één van de Big Five persoonijkheidstrekken.")
print ("Elk onderdeel heeft 8 vragen. Deze zullen ongeveer 2 minuten duren.")
print ("Je kunt kiezen uit: vriendelijkheid, emotionele stabiliteit, extraversie, consciëntieusheid en autonomie")


# Welk construct wil je meten
while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
  print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
  Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
  elif Welk_construct == ("consciëntieusheid"): 
     Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
     Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
     Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
     Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
     Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
     Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
     Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
     Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
  elif Welk_construct == ("autonomie"):
     Antwoord_A1 = input (Vragenlijst_autonomie [0])
     Antwoord_A2 = input (Vragenlijst_autonomie [1])
     Antwoord_A3 = input (Vragenlijst_autonomie [2])
     Antwoord_A4 = input (Vragenlijst_autonomie [3])
     Antwoord_A5 = input (Vragenlijst_autonomie [4])
     Antwoord_A6 = input (Vragenlijst_autonomie [5])
     Antwoord_A7 = input (Vragenlijst_autonomie [6])
     Antwoord_A8 = input (Vragenlijst_autonomie [7])
  elif Welk_construct == ("extraversie"):
     Antwoord_E1 = input (Vragenlijst_extraversie [0])
     Antwoord_E2 = input (Vragenlijst_extraversie [1])
     Antwoord_E3 = input (Vragenlijst_extraversie [2])
     Antwoord_E4 = input (Vragenlijst_extraversie [3])
     Antwoord_E5 = input (Vragenlijst_extraversie [4])
     Antwoord_E6 = input (Vragenlijst_extraversie [5])
     Antwoord_E7 = input (Vragenlijst_extraversie [6])
     Antwoord_E8 = input (Vragenlijst_extraversie [7])
  elif Welk_construct == ("emotionele stabiliteit"):
     Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
     Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
     Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
     Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
     Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
     Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
     Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
     Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])

# wil je nog een construct meten?
while Nog_een != "ja" and Nog_een != "nee":
 print ("Let op: het antwoord moet expliciet ja of nee zijn en het programma is hoofdlettergevoelig.")
 Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")

# Nee
 if Nog_een == "nee":
  print ("Bedankt voor je deelname!")

 # ja
 if Nog_een == "ja":
     Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
     while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
      print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
      Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
     if Welk_construct == ("vriendelijkheid"):
        Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
        Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
        Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
        Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
        Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
        Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
        Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
        Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("consciëntieusheid"): 
        Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
        Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
        Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
        Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
        Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
        Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
        Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
        Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("autonomie"):
        Antwoord_A1 = input (Vragenlijst_autonomie [0])
        Antwoord_A2 = input (Vragenlijst_autonomie [1])
        Antwoord_A3 = input (Vragenlijst_autonomie [2])
        Antwoord_A4 = input (Vragenlijst_autonomie [3])
        Antwoord_A5 = input (Vragenlijst_autonomie [4])
        Antwoord_A6 = input (Vragenlijst_autonomie [5])
        Antwoord_A7 = input (Vragenlijst_autonomie [6])
        Antwoord_A8 = input (Vragenlijst_autonomie [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("extraversie"):
        Antwoord_E1 = input (Vragenlijst_extraversie [0])
        Antwoord_E2 = input (Vragenlijst_extraversie [1])
        Antwoord_E3 = input (Vragenlijst_extraversie [2])
        Antwoord_E4 = input (Vragenlijst_extraversie [3])
        Antwoord_E5 = input (Vragenlijst_extraversie [4])
        Antwoord_E6 = input (Vragenlijst_extraversie [5])
        Antwoord_E7 = input (Vragenlijst_extraversie [6])
        Antwoord_E8 = input (Vragenlijst_extraversie [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("emotionele stabiliteit"):
        Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
        Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
        Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
        Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
        Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
        Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
        Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
        Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")


# opslaan antwoorden
antwoorden_demografische_vragen = [Naam, Leeftijd, Geslacht]
antwoorden_vriendelijkheid = [Antwoord_V1, Antwoord_V2, Antwoord_V3, Antwoord_V4, Antwoord_V5, Antwoord_V6, Antwoord_V7, Antwoord_V8]
antwoorden_consciëntieusheid = [Antwoord_C1, Antwoord_C2, Antwoord_C3, Antwoord_C4, Antwoord_C5, Antwoord_C6, Antwoord_C7, Antwoord_C8]
antwoorden_autonomie = [Antwoord_A1, Antwoord_A2, Antwoord_A3, Antwoord_A4, Antwoord_A5, Antwoord_A6, Antwoord_A7, Antwoord_A8]
antwoorden_extraversie = [Antwoord_E1, Antwoord_E2, Antwoord_E3, Antwoord_E4, Antwoord_E5, Antwoord_E6, Antwoord_E7, Antwoord_E8]
antwoorden_emotionele_stabiliteit = [Antwoord_ES1, Antwoord_ES2, Antwoord_ES3, Antwoord_ES4, Antwoord_ES5, Antwoord_ES6, Antwoord_ES7, Antwoord_ES8, ]

data = open("antwoorden vragenijst", "a")
data.writelines(str(antwoorden_demografische_vragen) + "\n")
data.writelines(str(antwoorden_vriendelijkheid) + "\n")
data.writelines(str(antwoorden_consciëntieusheid) + "\n")
data.writelines(str(antwoorden_autonomie) + "\n")
data.writelines(str(antwoorden_extraversie) + "\n")
data.writelines(str(antwoorden_extraversie) + "\n")
data.writelines(str(antwoorden_emotionele_stabiliteit) + "\n")
data.close()

【问题讨论】:

  • 您能提供完整的代码吗?目前尚不清楚这个while 是在for 内部还是什么,对于非荷兰语人士来说,很难从上下文中推断出来。 :)
  • 我认为在这里使用二维列表(数组)可能会有所帮助。像“Antwoord_V1”这样的东西是一维列表,但是,如果将其替换为二维列表 Antwoord,则对于每个“Welk_construct”,将使用不同的索引。
  • 当然!你能告诉我我是怎么做到的吗?已经感谢您甚至回复 btw!

标签: python for-loop input while-loop


【解决方案1】:

它保持打印的原因是因为在你的第一个 while 循环中,vrag 满足了指定的保持循环的条件,并且 vrag 没有地方将值更改为字符串:

for Vragenlijst_vriendelijkheid in (list(range(0,8))):

# Because of the wile-loop, the for-loop only got to iterate once

 while Vragenlijst_vriendelijkheid != "Helemaal niet mee eens" and Vragenlijst_vriendelijkheidg != "Niet mee eens" and Vragenlijst_vriendelijkheid != "Neutraal" and Vragenlijst_vriendelijkheid != "Mee eens" and Vragenlijst_vriendelijkheid != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antd dient precies overgenomen te worden.")

要解决这个问题,请将 while 更改为 if:

 if Vragenlijst_vriendelijkheid != "Helemaal niet mee eens" and Vragenlijst_vriendelijkheidg != "Niet mee eens" and Vragenlijst_vriendelijkheid != "Neutraal" and Vragenlijst_vriendelijkheid != "Mee eens" and Vragenlijst_vriendelijkheid != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antd dient precies overgenomen te worden.")

【讨论】:

  • 我必须改变什么来阻止它? (我真的很抱歉,我很难用自己的语言理解编码,更不用说用英语了)
  • 我已将其添加到帖子中。
【解决方案2】:

我希望我会说荷兰语,这样我就可以很好地理解这段代码,以便能够准确地向您展示如何更简单地编写它(我在这里看到了足够多的复制+粘贴,我认为您可以将其缩小到大约 1/ 20th of its current size),但我怀疑由于口语障碍,它会变得难以辨认,所以我不得不提供一般提示。 :)

一般来说,任何时候你发现自己在做这样的事情:

  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])

您不想拥有 8 个不同的命名字符串,您只想拥有 8 个字符串的列表:

  if Welk_construct == ("vriendelijkheid"):
     antwoord = [input(question) for question in Vragenlijst_vriendelijkheid]

如果您想验证输入是否与某组词匹配,您可以使用实际的set。您还可以使用 lower() 之类的函数来消除大小写差异。所以这个:

while Geslacht != "Man" and Geslacht != "man" and Geslacht != "Vrouw"  and Geslacht != "vrouw"and Geslacht != "Anders" and Geslacht != "anders":
  Geslacht = input (Demografische_vragen [1])

可以更简洁地写成:

while Geslacht.lower() not in {"man", "vrouw", "anders"}:
  Geslacht = input(Demografische_vragen[1])

验证输入是否符合特定模式的另一种方法是使用枚举:

from enum import Enum
class Geslacht(Enum):
    MAN = "man"
    VROUW = "vrouw"
    ANDERS = "anders"

while True:
    try:
        geslacht = Geschlact(input(Demografische_vragen[1]))
    except ValueError as error:
        # the loop will continue and try again
        print(error)
    else:
        # geslacht is now guaranteed to be a valid Geslacht enum value
        break

使用 Enum 的好处是,如果您在某处输入字符串,您会立即收到错误消息。如果您使用 IDE,枚举也会很好地自动完成(因为 IDE 可以看到枚举定义,只要您开始输入 Geslacht.,它就会向您显示所有有效值的列表),如果您使用 @987654329 @,您可以完全确信您始终获得特定类型的有效值,即使无需运行代码并对其进行测试。

在这个特定的循环中:

for Vragenlijst_vriendelijkheid in (list(range(0,8))):
 while Vragenlijst_vriendelijkheid (list(range(0,8))) != "Helemaal niet mee eens" and != "Niet mee eens" and != "Neutraal" and != "Mee eens" and != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antwoord dient precies overgenomen te worden.")

您正在重新分配Vragenlijst_vriendelijkheid,我认为您不想这样做(这是您的问题列表,对吧)?我认为您可能想做更多类似的事情:

for question in Vragenlijst_vriendelijkheid:
    if question not in {
        "Helemaal niet mee eens",
        "Niet mee eens",
        "Neutraal",
        "Mee eens",
        "Helemaal mee eens"
    }:
        print("Let op: deze vragen zijn hoofdletter gevoelig, "
              "elk antwoord dient precies overgenomen te worden.")

但我实际上并不知道这个循环应该做什么,所以我不确定它离你有多近。 (是否应该迭代答案?如果是这样,将答案放入列表而不是八个不同名称的变量中尤为重要!)

【讨论】:

  • 很好,@Samwise!是的,一旦您多次看到多个字符串,或者进行太多比较,通常会有一种更隐秘/更有效的方法。
【解决方案3】:

您绝对可以稍微清理一下这段代码,使其a) 更短,b) 更简洁。

例如,您有:

# antwoorden Vragenijst_emotionele_stabiliteit
Antwoord_ES1 = ("onbekend")
Antwoord_ES2 = ("onbekend")
Antwoord_ES3 = ("onbekend")
Antwoord_ES4 = ("onbekend")
Antwoord_ES5 = ("onbekend")
Antwoord_ES6 = ("onbekend")
Antwoord_ES7 = ("onbekend")
Antwoord_ES8 = ("onbekend")

这可以通过使用这样的构造来清理。请注意,python 使用基于 '0' 的数组/列表:

Antwoord_ES=[]
for i in range(0,7):
    Antwoord_ES.append("onbekend")

print(len(Antwoord_ES))

您可以将此想法扩展到更多维度。请参阅此处以获取参考:https://www.geeksforgeeks.org/python-using-2d-arrays-lists-the-right-way/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2022-06-28
    • 1970-01-01
    相关资源
    最近更新 更多