
ПОМОГИТЕ!!!! Даны натуральное число N - длина массива, k, s - номера элементов массива, отчет
начинается с 1 (Числа вводятся через пробел). На следующей строке записан массив целых чисел, каждый элемент которого записан через пробел. Является ли s-й элемент массива положительным числом (ответ YES/NO) Какой элемент массива больше: k-й или s-й ? (ответ("k"/"s"/"draw"(в случае если они равны)) Сначала выводиться (YES/NO), затем, на следующей строчке ("k"/"s"/"draw"(в случае если они равны)) МОЯ ПРОГА: n, k, s = map(int, input().split()) mas = input().split() for i in range(len(mas)): mas[i] = int(mas[i]) for i in range(n): if mas[s] > 0: print('YES') else: print('NO') for i in range(n): if mas[k] > mas[s]: print('k') elif mas[k] < mas[s]: print('s') else: print('draw') ОНА ВЫВОДИТ: YES YES YES YES YES s s s s s А сам вывод должен быть только с 'YES' и 's' В чем ошибка проги?

Ответы на вопрос

первая ошибка в том, что ты берешь mas[s] и mas[k], при желании взять s-ый и k-ый элемент, но в питоне нумерация элементов идет с нуля, значит ты берешь (s+1)-ый и (k+1)-ый элемент вместо s-ого и k-ого
вторая ошибка в том, что ты, отвечая на вопрос, создаешь цикл. Зачем тебе "for i in range" - конструкция в 5 и 10 строках?



Проблема в вашей программе заключается в том, что вы используете цикл for i in range(n)
для проверки условий и вывода ответов на каждой итерации. Вместо этого, вы должны проверить условия и вывести ответы только один раз после обработки входных данных. Вот исправленный вариант вашей программы:
pythonn, k, s = map(int, input().split())
mas = input().split()
for i in range(len(mas)):
mas[i] = int(mas[i])
# Проверяем, является ли s-й элемент положительным числом
if mas[s - 1] > 0:
print('YES')
else:
print('NO')
# Сравниваем k-й и s-й элементы массива
if mas[k - 1] > mas[s - 1]:
print('k')
elif mas[k - 1] < mas[s - 1]:
print('s')
else:
print('draw')
Изменения, которые были внесены:
Вычитаем 1 из
s
иk
, так как номера элементов начинаются с 1, а в Python индексация начинается с 0.Проверяем условия и выводим ответы только один раз после обработки всех данных, а не на каждой итерации цикла.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili