Ваш отступ неверен в предложении else
.
Поскольку он находится на том же уровне, что и for
l oop, else
принадлежит for
l oop, а не оператор if
.
Просто отступ предложение else
на том же уровне, что и if
, как показано ниже:
input_namn = input("Ange ett namn: ")
for key in rooms_with:
if input_namn in rooms_with[key]:
print (input_namn + "\ndelar rum med \n" + key)
else: # This is indented correctly
print ("\nPersonen du angav är inte en del av föreningen\n")
Что происходит, когда else
принадлежит for
l oop?
Python Документация говорит:
* Операторы 1028 * L oop могут содержать предложение else
; он выполняется, когда l oop завершается из-за исчерпания итерируемого (с for
) или когда условие становится ложным (с while
), но не тогда, когда l oop завершается оператором break
.
Как правило, в конце блока l oop выполняется блок else
, за исключением случаев, когда циклы были остановлены оператором break
.
И так как в вашем l oop не было оператора break
, ваша ветвь else
была выполнена.