Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 3

Проблема с тем, что везде получаются только отсортированные данные

13.05.2024, 21:46. Показов 828. Ответов 3

Студворк — интернет-сервис помощи студентам
Добрый времени суток! Проблема с массивом, который был отсортирован, для переменном b нужно задать не отсортированный, а b1 и b2 отсортированные по разным способам, но в итоге так и не понял в чем моя ошибка с переменной b:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# пункт 1
file = open ('source_data.txt','r', encoding='utf-8')
line=file.readline()
line2=file.readline()
# пункт 2
s = line.replace(' ', '').replace('\n', '')
linegood1=line.replace('\n', '')
n1 = len(s)
n2 = int(line2)
delenie = n2/n1
delenie2=int(delenie)
#пункт 3
if delenie2/2==0:
    sort = 'по возрастанию'
    chet = 'чётное'
else:
    sort = 'по убыванию'
    chet = 'нечётное'
#пункт 4
massiv = list(s)
b=[]
b1=b
b2=b
for massiv2 in massiv:
     b.append(ord(massiv2))
b_sort_select = b1
b_sort_bubble = b2
#пункт 5
def sort_select(values):
    for i in range(len(values) - 1):
        min = i
        for j in range(i+ 1, len(values)):
            if values[min] > values[j]:
               min = j
        values[i], values[min] = values[min], values[i]
sort_select(b_sort_select)
def  sort_bubble(values):
    sam_sort = False
    while not sam_sort:
        sam_sort = True
        for i in range(len(values) - 1):
            if values[i] > values[i+1]:
                 values[i], values[i+1] = values[i+1], values[i]
                 sam_sort = False
sort_bubble(b_sort_bubble)
#пункт 6
summa = 0
for vce in b_sort_select:
    summa += vce
    arif = summa/len(b_sort_select)
summa2 = 0
for vce2 in b_sort_select:
    summa2 += vce2 ** 2
    quadrat = (summa2/len(b_sort_select)) ** 0.5
with open('result.txt', 'w', encoding='UTF-8') as f:
    f.write(  '1. Исходные данные: '+ str(linegood1) +'; ID: ' + line2 + '\n'
             + '2.'+ str(delenie) + '\n'
             + '3. Направление сортировки: ' + str(sort) + ', так как число ' + str (delenie2) + ' - ' + str(chet) +'\n'
             + '4. Набор данных: ' + str(b) + '\n'
             + '5. Отсортированный ' + str(sort) + ' набор данных ' + str(b_sort_select) + '\n'
             + '6. Среднее арифметическое значение: ' + str('%.3f'%arif ) + '\n'
             + '7. Среднее квадратическое значение: ' + str('%.3f' %quadrat))
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2024, 21:46
Ответы с готовыми решениями:

Проблема в том, что L и L1 получаются разными в процедуре и в основной части программы.
Здравствуйте. Проблема в том, что L и L1 получаются разными в процедуре и в основной части программы. Не подскажите, почему?? ...

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

Структуры: ввести данные о работниках и вывести их данные, отсортированные по алфавиту
Всем привет! Подскажите пожалуйста, что не так с моей функцией proverka? Мне нужно ввести данные о работниках и вывести их данные,...

3
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
13.05.2024, 22:51
kxakalis, опиши условие задачи. как подаются данные на вход. и скопировав код в поле выдели его и нажми PYTHON сверху окна с сообщением

Добавлено через 4 минуты
а ошибка твоя скорее всего в том что ты сортируешь один и тот же список. создавай в функциях сортировки копию ее сортируй и возвращай

Добавлено через 3 минуты
Цитата Сообщение от kxakalis Посмотреть сообщение
b=[]
b1=b
b2=b
вот тут.
для понимания пример
Python
1
2
3
4
5
6
7
8
a = [4, 67, 34, 23, 48, 12, 133, 76, 34, 89]
b = a
b1 = a
print(b1)
a.sort()
print(a)
print(b)
print(b1)
[4, 67, 34, 23, 48, 12, 133, 76, 34, 89]
[4, 12, 23, 34, 34, 48, 67, 76, 89, 133]
[4, 12, 23, 34, 34, 48, 67, 76, 89, 133]
[4, 12, 23, 34, 34, 48, 67, 76, 89, 133]
0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 3
13.05.2024, 22:55  [ТС]
Semen-Semenich, Данные на вход подаются через файл source_data в котором ФИО и id(допустим 23412460) нужно получить 7 условий.
1. Это просто исходные данные в виде фио и id
2. Вычислить целое значение, получившееся в результате деления числа ID
на количество символов, составляющих ФИО (количество символов
подсчитывается без учета пробелов).
3. Определить направление сортировки в зависимости от числа, полученного в п.2
- сортировка по возрастанию, если получившееся число в п.2 является четной
- сортировка по убыванию, если получившееся число в п.2 является
нечётным.
4. Сформировать набор данных (список целых чисел) из кодов Юникода
каждого символа ФИО (исключая пробелы между словами), переведенных в
десятичную форму.
5. Выполнить сортировку набора данных возрастанию.
И как раз проблема с тем, что везде получаются только отсортированные данные, а исходного набора данных нет
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
14.05.2024, 20:27
Лучший ответ Сообщение было отмечено kxakalis как решение

Решение

Цитата Сообщение от kxakalis Посмотреть сообщение
И как раз проблема с тем, что везде получаются только отсортированные данные
смотри пост выше. я тебе даже пример привел. b1 и b2 это не новые списки а ссылки на один и тот же список b. поэтому все сортировеи производятся в списке b переданному в функции по ссылкам b1 и b2

Добавлено через 2 часа 29 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def integer_value(line): 
    return int((id_) / len(full_name) % 2)
 
def data_set(full_name):
    return [ ord(lett) for lett in full_name]
 
def  sort_buble(list_numb, int_val):
    list_copy = list_numb [:] # создаем копию списка и ее сортируем
    n = len(list_copy)
    for i in range(n - 1):
        for j in range(n -1 - i):
            if list_copy[j] > list_copy[j+1]:
                list_copy[j], list_copy[j+1] = list_copy[j+1], list_copy[j]
    if not int_val: # если получившееся число в п.2 является четным
        return list_copy # возвращаем копию отсортированную по возрастанию
    return list_copy[::-1] # если условие пропущенно то по уменьшению т.к int_val нечетное
 
with open ('source_data.txt') as f_in:
    data = f_in.read().splitlines() # получаем строки файла Ф И О ИД (
for line in data: # получаем строку для обработки
    lst_line = line.split() # разделяем по пробелу
    full_name = ''.join(lst_line[:-1]) # забираем фио одной строкой без пробелов
    id_ = int(lst_line[-1]) # забираем ид приводя строку к числу
    int_val = integer_value(lst_line) # Вычисляем целое значение п.2 для пункта 3
    list_numb = data_set(full_name) # формируем набор данных п.4
    result = sort_buble( list_numb, int_val) # сортируем
     
    print('целое значение', int_val)
    print('набор данных до сортировки')
    print(list_numb)
    print('набор данных после сортировки согласно п.5')
    print(result)
    print('набор данных без изменения после сортировки копии')
    print(list_numb)
    print()
данные в файле source_data.tx

Глебов Никита Глебович 903782
Березина Ева Захаровна 340046
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2024, 20:27
Помогаю со студенческими работами здесь

Считать данные о ноутбуках с .txt, обрабатывать их и записывать в .bin файл отсортированные данные
Добрый вечер. Пред мной поставлена задача написать программу, которая будет считывать данные о ноутбуках с файла .txt обрабатывать их и...

Детишкам не смотреть ! проблема с тем что я тупой как валенок
Ребят всем привет!! не удивляйтесь люблю работать ночью(юный игорь овер) да я депрессую тк мамка не купила мне курс от скилбокса 1с разраб...

По одним и тем же точкам получаются разные границы фигур при использовании разных примитивов: ConvexShape и LinesStrip
По одним и тем же точкам получаются разные границы фигур при использовании разных примитивов: ConvexShape и LinesStrip. Почему так? ...

Вывести в jTable отсортированные данные
Подскажите пожалуйста как вывести перечень игрушек, цена которых не превышает указанную и которые подходят детям 5 лет в порядке роста...

DataSet. Сохранить отсортированные данные
Добрый день. Сохранить данные не проблема, но вот как сохранить отсортированные данные решение ищу уже часа два. То ли руки из жопы, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru