merkwürdige for - Schleife
Verfasst: Montag 7. Oktober 2013, 21:09
Hallo,
eine Kurze Erklärung:
Mein Vater ist Heilpraktiker und ich habe mir überlegt ob ich nicht eine Software schreiben könnte, die ihm die Arbeit abnimmt bzw erleichtert, und zwar folgendermaßen: Es gibt Syntome und zu jedem Syntom eine Liste wirkungsvoller Heilmittel. Einen ganz kleinen Ausschnitt zu Testzwecken habe ich erstellt, er ist nicht wahrheitsgetreu und dient wie gesagt ausschließlich zu Testzwecken. Der User kann jetzt eingeben, was er für Syntome miteinander abgleichen möchte und soll jetzt das Heilmittel ausgespukt bekommen, das unter allen Syntomen zu finden ist. Eigentlich nicht so schwer. Aber ich habe ein Problem das mich irgendwie stutzig gemacht hat. Hier ersteinmal der Quellcode:
Auf das Programm selber muss eigentlich nicht weiter eingegangen werden (okay wenn ihr Ideen, Anregung und Kritik habt gerne)
Meine Frage ist nur: warum wird in der --> for main in cop_vergleich_list beim zweiten Durchlauf das 2te Element von cop_vergleich_list übersprungen?????? Um zu sehen was ich meine gebt im Input bitte
1. Abmagerung
2. Asthma
3. Kälte
4. q
ein.
Die Liste die zuerst ausgegeben wird ist: ['ares', 'merc', 'lyc', 'nat-m']
das ist die Ausgangsliste. Jetzt setze ich eine "for in - Schleife" auf diese Liste an, was im ersten Durchlauf funktionier, im 2ten allerdings 'merc' überspringt. Wenn ich die letzten 4 Code Zeilen (39-43) "out commente", sprich weglasse klappt es, aber ich weiß nicht wo da der Fehler ist...
if r_counter != sy_count:
del vergleich_list[counter]
Hierbei verändere ich ja nichtmal irgendetwas an der an die for schleife geknüpfte Liste, also warum wird 'merc' hier übersprungen?
Ja ich weiß es ist sehr speziell, aber ich hoffe jemand kann mir helfen.
MFG
eine Kurze Erklärung:
Mein Vater ist Heilpraktiker und ich habe mir überlegt ob ich nicht eine Software schreiben könnte, die ihm die Arbeit abnimmt bzw erleichtert, und zwar folgendermaßen: Es gibt Syntome und zu jedem Syntom eine Liste wirkungsvoller Heilmittel. Einen ganz kleinen Ausschnitt zu Testzwecken habe ich erstellt, er ist nicht wahrheitsgetreu und dient wie gesagt ausschließlich zu Testzwecken. Der User kann jetzt eingeben, was er für Syntome miteinander abgleichen möchte und soll jetzt das Heilmittel ausgespukt bekommen, das unter allen Syntomen zu finden ist. Eigentlich nicht so schwer. Aber ich habe ein Problem das mich irgendwie stutzig gemacht hat. Hier ersteinmal der Quellcode:
Code: Alles auswählen
verzeichnis = {
'Abmagerung' : [ 'ares' , 'merc' , 'lyc' , 'nat-m' ] ,
'Asthma' : [ 'ars' , 'nat-m' , 'lyc' , 'phos' ] ,
'Kälte' : [ 'ars' , 'merc' , 'sil' , 'lyc' , ]
}
run = True
syn_list = []
sy_count = 0
while run == True:
syntom = input ('Gib ein Synthome ein: ')
if syntom is '0' or syntom is '-' or syntom is '/' or syntom is 'q':
run = False
else:
syn_list.append(syntom)
sy_count += 1
vergleich_len = 0
vergleich_save = ''
for längstes in range (0, len(syn_list)):
if len(verzeichnis[syn_list[längstes]]) > vergleich_len:
vergleich_save = syn_list[längstes]
vergleich_len = len(verzeichnis[syn_list[längstes]])
vergleich_list = verzeichnis[vergleich_save]
counter = 0
cop_vergleich_list = vergleich_list
print(cop_vergleich_list) # Überprüfung
for main in cop_vergleich_list:
print(main) # Meine große frage ist hier zu finden
r_counter = 0
for u_main in verzeichnis:
if main in verzeichnis[u_main]:
r_counter += 1
if r_counter != sy_count:
del vergleich_list[counter]
counter = counter + 1
print(vergleich_list)
Meine Frage ist nur: warum wird in der --> for main in cop_vergleich_list beim zweiten Durchlauf das 2te Element von cop_vergleich_list übersprungen?????? Um zu sehen was ich meine gebt im Input bitte
1. Abmagerung
2. Asthma
3. Kälte
4. q
ein.
Die Liste die zuerst ausgegeben wird ist: ['ares', 'merc', 'lyc', 'nat-m']
das ist die Ausgangsliste. Jetzt setze ich eine "for in - Schleife" auf diese Liste an, was im ersten Durchlauf funktionier, im 2ten allerdings 'merc' überspringt. Wenn ich die letzten 4 Code Zeilen (39-43) "out commente", sprich weglasse klappt es, aber ich weiß nicht wo da der Fehler ist...
if r_counter != sy_count:
del vergleich_list[counter]
Hierbei verändere ich ja nichtmal irgendetwas an der an die for schleife geknüpfte Liste, also warum wird 'merc' hier übersprungen?
Ja ich weiß es ist sehr speziell, aber ich hoffe jemand kann mir helfen.
MFG