Задать вопрос
@xcomvlad
Wed developer

Почему не работает код Python?

names = ["Влад", "Юля", "Петя"]
i = 0
while i < 3:
	if i != 2:
		if names[i] == "Петя":
			print("Имя Саша есть в элементе под номером " + str(i))
			i += 1
	else:
		if names[i] == "Петя":
			print("Имя Петя есть в элементе под номером " + str(i))
			i += 1
		else:
			print("Имени Петя в массиве нет!")
			i += 1


Что делаю не так? Программа должна искать имя Петя и писать в каком элементе оно находится
  • Вопрос задан
  • 1229 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@OlegPyatakov
pyatakov.com
Потому что логика исполнения идет в ветку, где не происходит инкременитрования переменной, и, таким образом, идет бесконечный цикл, в котором i == 0.
Чтобы этого избежать, можно перенести инкрементирование из веток в общий while-цикл.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@cashncarry
нагуглили
Конкретно в этом коде цикл бесконечный потому что на втором if нет else.
Получается:
i != 2 --> names[i] != "Петя" --> цикл запускается заново, при этом i = 0.
Что бы этого избежать поставь i += 1 последней строкой для while

А лучше поработай над кодом.
names = ["Влад", "Юля", "Петя"]
i = 0
while i < len(names):
    if names[i] == "Петя":
        print("Имя Петя есть в элементе под номером " + str(i))
        break
    elif i == len(names) - 1:
        print("Имени Петя в массиве нет!")
    i += 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы