Zadanie w pythonie

0

Utwórz tablicę polish[] oraz english[] zawierające polskie oraz angielskie nazwy conajmniej 5 kolorów oraz zmienną słowo, która będzie zawierać szukane słowo.
Wykorzystując pętle, utwórz program, który będzie porównywał zmienną słowo z kolejnymi i-tymi elementami tablicy polish[] tak długo aż będą sobie równe.
W przypadku równości program ma wyświetlić i-ty element tablicy english[].

Mam to zadanie do zrobienia i nie bardzo wiem jak, mógłby ktoś pomóc i zrobić lub wytłumaczyć mi jak to zrobić? Nie bardzo wiem jaki warunek wpisać w pętli 'while'.

Byłbym naprawdę wdzięczny:))

0

pokaz kod ktory juz napisales bo widze ze zakladasz juz kolejny temat z jakims zadaniem domowym i liczysz ze ktos ci gotowca wrzuci

1

ok widze cos tam probowales

polish=['czerwony', 'zielony', 'bialy', 'czarny', 'niebieski']
english=['red', 'green', 'white', 'black', 'blue'] 
slowo='niebieski'
for index, word in enumerate(polish):
    if word==slowo:
        print(english[index])
1
kimikini napisał(a):

ok widze cos tam probowales

polish=['czerwony', 'zielony', 'bialy', 'czarny', 'niebieski']
english=['red', 'green', 'white', 'black', 'blue'] 
slowo='niebieski'
for index, word in enumerate(polish):
    if word==slowo:
        print(english[index])

Poprawnie, ale niepytonicznie :)

polish = ...
english = ...
slowo = ...

for slowo_pl, slowo_en in zip(polish, english):
    if slowo_pl == slowo:
        print(slowo_en)
sphinx napisał(a):

Nie bardzo wiem jaki warunek wpisać w pętli 'while'.

Musi być while?

1

Wersja z while:

polish=['czerwony', 'zielony', 'bialy', 'czarny', 'niebieski']
english=['red', 'green', 'white', 'black', 'blue'] 
word='niebieski'

index = 0
while polish[index] != word:
  index += 1

print(english[index])
1

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")
3
polish=['czerwony', 'zielony', 'bialy', 'czarny', 'niebieski']
english=['red', 'green', 'white', 'black', 'blue'] 
word = input('Podaj słowo: ')

d = dict(zip(polish, english))
print(d.get(word, 'Nie znaleziono'))

1 użytkowników online, w tym zalogowanych: 0, gości: 1