Уведомления

Группа в Telegram: @pythonsu

#1 Июль 3, 2020 17:53:48

Sabach
Зарегистрирован: 2020-07-03
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Доброго дня!
Помогите разобраться в логике, вернее,где не так…
Задача, думаю, всем знакома: подсчет нулей в массиве.
В идеале это выполнить так:

 N=int(input("Введите число элементов массива: "))
n=[]
for i in range(N):
     n.append(int(input("Введите число массива: ")))
print("Количество нулей в массиве: ",n.count(0))
но в задании стоит не использовать функции.
Можно сделать так:
 N=int(input("Введите число элементов массива: "))
Q=0
for i in range(N):
    n=int(input("Введите число массива: "))
    if n==0:
        Q+=1
print("Количество нулей в массиве: ",Q)
но нет данных по введенному массиву.
Как объединить оба кода, чтобы и введенный массив показывал и нули подсчитывал (желательно через if)?
При таком варианте считает неверно:
 N=int(input("Введите число элементов массива: "))
n=[]
q=0
for i in range(N):
     n.append(int(input("Введите число массива: ")))
     if n==0:
         q=q+1
print("Массив: ",n)
print("Количество нулей в массиве: ",q)
Где неправильна логика? Заранее спасибо…

Офлайн

#2 Июль 3, 2020 18:17:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Sabach
но в задании стоит не использовать функции.
Покажите задание



Офлайн

#3 Июль 3, 2020 18:40:53

Sabach
Зарегистрирован: 2020-07-03
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

FishHook
Вероятно, некорректно выразился.
Задание - написать код, который выводит количество чисел равных нулю. Но в связи с тем, что я только обучаюсь, мы еще не проходили функции. Поэтому, необходимо использовать код, похожий на циклы…
Из приведенных примеров, 1-ый вариант сам допетрил, 2-ой подсмотрел.
Что неверно в объединенном варианте?

Офлайн

#4 Июль 3, 2020 19:03:53

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Sabach

Может быть я тупой, но

В идеале это выполнить так:

  
  
N=int(input("Введите число элементов массива: "))
n=[]
for i in range(N):
     n.append(int(input("Введите число массива: ")))
print("Количество нулей в массиве: ",n.count(0))
но в задании стоит не использовать функции.

Здесь нет ни одной функции, в чем проблема?



Офлайн

#5 Июль 3, 2020 19:07:18

Sabach
Зарегистрирован: 2020-07-03
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

FishHook
SabachМожет быть я тупой, но
Скажем так, count я еще знать не должен… Да, Бог с ним… Оба варианта задачу решают.
Я пытаюсь для себя понять, почему в 3-ем варианте не считает нули? Где ощибка?

Офлайн

#6 Июль 3, 2020 19:20:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Sabach
Где ощибка?
      n.append(int(input("Введите число массива: ")))
     if n==0:
n - это список.
Почему вы сравниваете список с нулём?



Офлайн

#7 Июль 3, 2020 19:37:31

Sabach
Зарегистрирован: 2020-07-03
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

FishHook
n - это список.
Почему вы сравниваете список с нулём?
Отталкивался от 2-го варианта, но там, действительно идет ввод числа и потом поиск его равенства нулю.
Спасибо.
В моем обобщенном варианте, да, n - выходит список массива. Зашел в тупик…
Подсказку не дадите для дилетанта?

Офлайн

#8 Июль 3, 2020 21:18:05

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

смотрим элемент массива который является списком. смотрим и считаем количество нулей в этом элементе списке.
у вас нет ‘массива’. у вас просто список. тупо в цикле перебираем элементы и считаем нули

Офлайн

#9 Июль 4, 2020 00:59:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Sabach
Подсказку не дадите для дилетанта?
Sabach
но в задании стоит не использовать функции
input и print - это функции.
  
>>> input
<built-in function input>
>>> print
<built-in function print>
>>>
Видимо, тебе запрещено использовать методы списка, кортежа и других аналогов массива.

Sabach
Как объединить оба кода, чтобы и введенный массив показывал и нули подсчитывал (желательно через if)?
Во-первых, ты ошибочно думаешь, что их надо объединять. В программировании нужно, наоборот, всё разделять при первой же возможности. Модульная система. Если в одном модуле что-то произошло, то надо его просто изолировать, чтобы вся программа продолжила работать или разрабатываться в прежнем режиме. Это как на подводной лодке или на космической станции - при любом ЧП изолируется отсек (он же модуль).
Поэтому сначала ты должен ввести данные, и только после этого ты должен работать с данными.

Тут пошёл алгоритм:
1. Ввести данные.
2. Посчитать нули.
3. Вывести результаты.

Каждое действие выполняешь по очереди и следующее действие не начинаешь, пока полностью не закончишь предыдущее.

Сам всё сделаешь? Начни с первого действия и полностью его выполни. Покажи код, чтобы тебе сказали “да, правильно сделал это”. После этого сделай второе действие и полностью его выполни. Покажи код, чтобы тебе сказали “да, правильно сделал это”. Либо тебе скажут на втором действии “нет, неправильно ты это сделал”. Тогда ты станешь переделывать второе действие, но при этом первое действие не будет затронуто этой корректировкой, так как оно выполнено правильно. Это метод отсечений: написал что-то правильно - отложил в сторону, приступил к следующему. Когда у тебя первое действие выполнено правильно, второе действие выполнено правильно, только тогда ты делаешь третье действие. И так же приходишь и показываешь код и тебе говорят “да, правильно сделал это”. Когда у тебя первое действие выполнено правильно, второе действие выполнено правильно, третье действие выполнено правильно, тогда ты правильно выполнил весь алгоритм. Тут кроется маленький секрет: этот весь алгоритм потом становится одним маленьким действием в другом алгоритме, а тот другой алгоритм сам по себе тоже потом становится одним маленьким действием в ещё каком-то другом алгоритме. И тут кроется ещё один секрет: если тебе надо посчитать нули на сайте, а не в массиве, то ты берёшь готовый алгоритм и заменяешь полностью в нём первое действие, не затрагивая ничего во втором действии и в третьем действии. Это называется переиспользованием (reuse или по-русски реюз) кода - когда вместо написания кода с нуля ты берёшь откуда-то уже написанный ранее код (из другого проекта, из другого решения другой задачи, из кода другого автора другого проекта и тому подобного).

Как только ты начнёшь соблюдать эти элементарные правила и строго следовать им, сразу начнёт всё получаться и с вводом, и с циклами, и с красивым выводом. Всё это связано с тем, что хорошие алгоритмы вставляются в хорошие алгоритмы. Но хорошие алгоритмы пишутся по строгим правилам.


tags: algorithm module reuse



Отредактировано py.user.next (Июль 4, 2020 01:10:14)

Офлайн

#10 Июль 4, 2020 19:02:25

Sabach
Зарегистрирован: 2020-07-03
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

marvellik
у вас просто список
Спасибо, что сделали акцент на СПИСОК. Почему-то был уверен по изучаемым материалам, что - это обязательно массив.
py.user.next
Спасибо за дельные советы.Постараюсь их придерживаться.
py.user.next
Тут пошёл алгоритм:
1. Ввести данные.
2. Посчитать нули.
3. Вывести результаты.
1. Вводим данные:
 N=int(input("Ввести кол-во элементов: "))
n=[]
for i in range(N):
    n.append(int(input("Введите число: ")))
print(n)
2. Считаем нули:
 q=0
for i in range(len(n)):
    if n[i]==0:
        q+=1
print(q)
3. В результатах выходит и сам и список и количество нулей

Единственное, сам бы не додумался использовать был ввод
 n[i]


По определению встроенных функций:
range(x) позволяет вам генерировать ряд чисел в рамках заданного диапазона
len(x) - Возвращает число элементов в указанном объекте
Мне, только вступающему на путь программирования, сложны для понимания данные определения, далекие от простого человеческого языка…

Отредактировано Sabach (Июль 4, 2020 19:06:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version