A tak bardziej pythonowo z (i-tym elementem wymienionym w poleceniu):
polish=['czerwony', 'zielony', 'bialy', 'czarny', 'niebieski']
english=['red', 'green', 'white', 'black', 'blue']
word='niebieski' # Albo input("Podaj kolor: ")
for i in range(len(polish):
if polish[i] == word:
print(english[i])
break
else: #Jeśli break z for'a nie zostanie wywołany, zostanie wywołany else.
print("Nie znaleziono słowa")
Trzy ostatnie linijki oczywiście można pominąć. Ale wtedy program nie da nam komunikatu gdy nie znajdzie koloru.
W przypadku choćby kodu kolegi wyżej z while. Gdy nie znajdzie koloru, wyskoczy IndexError i program się przerwie.
Oczywiście najbardziej pythonowy zapis już wrzucił iksde, jedyne co to bez 'i-tego elementu' z polecenia :).
Też robiłbym bez tego... Ale cóż zrobić na polecenia akademickie :D. Zip lepszy niż szukanie indexu później bo alternatywnie można zrobić też tak: for pl in polish: if pl == word: print(english[polish.index(pl)])
Ale metoda z zipem powinna być szybsza i czytelniejsza więc analogicznie lepsza ;d.
Zaś co do przymusu while, żeby nie generował błędu, musi być wyjście w przypadku gdy wyjdzie to poza długość listy, inaczej będzie sypać errorami :D.
#~ (dane)
index = 0
while index < len(polish): #~ Kiedy indeks jest mniejszy od długości listy. Bo długość jest liczona od jeden, indeksuje się od zera. Przy równości pętla się zakończy.
if polish[index] == word:
print(english[index])
break
else:
index += 1
else: #~ Gdy while się zakończy bo index będzie równy długości listy, a nie przez break, pokaże nam komunikat że nie znaleziono elementu.
print("Nie znaleziono")