Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Проблем с функцията count и remove

Проблем с функцията count и remove

Мнениеот Какаши Сенсей » 13 Ное 2021, 10:44

Задачата на кода ми е да вземе числата от даден списък, само по един път. За тази цел използвам следния код, който може да видите.
Та идеята ми е да бъде преброено едно числко колко пъти се среща в списъка, ако един път се среща то се добавая към новия списък, ако се среща повече от един път то тогава трябва да се вземе числото да се добави, към новия списък и след това да бъдат премахнати всички подобни числа, за да се предоврати объркване. Но когато стартирам програмата, всеки път ми дава грешка казвайки ми, че на 19 ред. Не мога да разбера къде е проблема, Да не би програмата да чета v1, като стринг и за това да би дава грешка, а не като променлива, която съдържа число?
Прикачени файлове
Екранна снимка 2021-11-13 103905.png
Екранна снимка 2021-11-13 103905.png (27.04 KiB) Прегледано 426 пъти
Екранна снимка 2021-11-13 104012.png
Екранна снимка 2021-11-13 104012.png (21.47 KiB) Прегледано 426 пъти
Най-важно е душата да бъде извисена .
Какаши Сенсей
Фен на форума
 
Мнения: 119
Регистриран на: 05 Май 2021, 10:26
Рейтинг: 28

Re: Проблем с функцията count и remove

Мнениеот ammornil » 13 Ное 2021, 19:09

В твоя код [tex]v1[/tex] е позиция а не стойност.
Доколкото си спомням, array_name.remove(element_value) премахва определена стойност от лист, а не определен индекс. Може би в твоя случай следва да използваш метода pop() за да премахнеш елемент с определен индекс, или del list[item_index] .

По-лесно е да минеш през елементите на всеки от дадените масиви и да проверяваш дали вече ги има в новия обобщен масив.
Поесле лесно можеш да провериш за елементите на обобщения масив по колко пъти се повтарят в оригиналните множества.
Надявам се да ти е полезен съвета ми. Успех!

Код: Избери целия код
a= [1, 1, 1, 1, 2, 2, 4, 5, 5]
b = [1, 1, 2, 3, 5, 3, 5, 134, 13, 134, 5]
c=[]
for s in a:
    if s in c:
        continue
    else:
        c.append(s)
for s in b:
    if s in c:
        continue
    else:
        c.append(s)
c.sort()
for s in c:
    print(s,"\tfound in a ",a.count(s), "\tfound in b ",b.count(s))

[tex][/tex]
Прикачени файлове
Screenshot 2021-11-13 170603.png
Screenshot 2021-11-13 170603.png (3.73 KiB) Прегледано 406 пъти
Последна промяна ammornil на 13 Ное 2021, 19:16, променена общо 1 път
[tex]\color{lightseagreen}\text{''Който никога не е правил грешка, никога не е опитвал нещо ново.''} \\
\hspace{21em}\text{(Алберт Айнщайн)}[/tex]
Аватар
ammornil
Математик
 
Мнения: 3719
Регистриран на: 25 Май 2010, 19:28
Местоположение: Великобритания
Рейтинг: 1751

Re: Проблем с функцията count и remove

Мнениеот Какаши Сенсей » 13 Ное 2021, 19:15

ammornil написа:В твоя код [tex]v1[/tex] е позиция а не стойност.
Доколкото си спомням, array_name.remove(element_value) премахва определена стойност от лист, а не определен индекс. Може би в твоя случай следва да използваш метода pop() за да премахнеш елемент с определен индекс, или del list[item_index] .

По-лесно е да минеш през елементите на всеки от дадените масиви и да проверяваш дали вече ги има в новия обобщен масив.
Поесле лесно можеш да провериш за елементите на обобщения масив по колко пъти се повтарят в оригиналните множества.
Надявам се да ти е полезен съвета ми. Успех!

Код: Избери целия код
a= [1, 1, 1, 1, 2, 2, 4, 5, 5]
b = [1, 1, 2, 3, 5, 3, 5, 134, 13, 134, 5]
c=[]
for s in a:
    if s in c:
        continue
    else:
        c.append(s)
for s in b:
    if s in c:
        continue
    else:
        c.append(s)
c.sort()
for s in c:
    print(s,"\tfound in a ",a.count(s), "\tfound in b ",b.count(s))



Благодаря Ви!
Най-важно е душата да бъде извисена .
Какаши Сенсей
Фен на форума
 
Мнения: 119
Регистриран на: 05 Май 2021, 10:26
Рейтинг: 28


Назад към PHP, Python и други езици за програмиране



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)