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

Создать "структуру"

11.09.2019, 22:26. Показов 2361. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для описания людей нужно создать массив, в каждой ячейке которого есть "Имя", "Возраст", "Рост", "Вес".
С возможностью добавлять нового и изменять которые уже есть

Насколько понимаю, нужно объявить класс (правильно ли?):
Python
1
2
3
4
5
6
class human(object):
    def __init__(self, name = None, age = 0, height = 0, weight = 0):
        self.name = name
        self.age = age
        self.height = height
        self.weight = weight
Потом создать массив из этого "human".
Обычный массив создаётся так : arr = [] // нулевой размер
Для добавления : arr.append(11) // размер 1
Для изменения : arr.[0] = 22

А как быть с созданием, добавлением и изменением массива "humanS"
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.09.2019, 22:26
Ответы с готовыми решениями:

Создать некую структуру в python, сопоставить значения
У меня есть 2-мерный ndarray с вещественными числами и словарь. Приведу пример: ar = np.array(,,]) dict = {0:'Собака', 1:'Кошка',...

Как создать структуру, где будут поля с указателями на эту же структуру?
#include <stdio.h> #include <stdlib.h> typedef struct DoubleQueue { queue* ar; queue* al; int data; }...

Как создать структуру-список, поля которой — ссылка на такую же структуру
Суть вопроса в том, как создать структуру-список, поля которой - ссылка на сл. элемент(такую же структуру) и ссылка на объект, относящийся...

8
60 / 86 / 16
Регистрация: 25.03.2019
Сообщений: 235
11.09.2019, 22:56
Если я правильно понял, вам нужно что-то вроде этого:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
 
class Human(object):
    def __init__(self, name=None, age=0, height=0, weight=0):
        self.name = name
        self.age = age
        self.height = height
        self.weight = weight
 
 
if __name__ == "__main__":
    humans = []
    human1 = Human("Вася", 10, 150, 40)
    human2 = Human("Федя", 11, 151, 41)
    human3 = Human("Дима", 12, 154, 45)
    humans.append(human1)
    humans.append(human2)
    humans.append(human3)
1
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
11.09.2019, 22:58
Направление
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
class Employe(object):
 
    def __init__(self, name, vozr, rost, ves):
        self.name = name
        self.vozr = vozr
        self.rost = rost
        self.ves = ves
 
    def printer(self):
        print(self.name)
        print(self.vozr)
        print(self.rost)
        print(self.ves)
 
 
if __name__ == '__main__':
    mlist = []
    man = Employe('111', 222, 222.2, 2)
    man.printer()
    man1 = Employe('222', 333, 444.2, 5)
    man2 = Employe('222', 333, 444.2, 5)
    mlist.append(man)
    mlist.append(man1)
    mlist.append(man2)
    print(mlist)
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
12.09.2019, 06:06
wozh pkox, безклассовое общество
Python
1
2
3
4
5
6
7
8
9
>>> from collections import namedtuple
>>> Human = namedtuple('Human','name age height weight')
>>> humans = []
>>> humans.append(Human('Guido',48,188,98))
>>> humans.append(Human('Raymond',52,175,78))
>>> humans.append(Human('Dave',44,175,98))
>>> print(humans)
[Human(name='Guido', age=48, height=188, weight=98), Human(name='Raymond', age=52, height=175, weight=78), Human(name='Dave', age=44, height=175, weight=98)]
>>>
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
12.09.2019, 11:54
Можно через namedtuple, можно через словарь (тоже вполне себе способ), можно через простой класс, для python 3.7+ можно через dataclass.
0
0 / 0 / 0
Регистрация: 11.09.2019
Сообщений: 7
12.09.2019, 15:42  [ТС]
Yuri197, вот это то, что нужно!

Можете подсказать, как отсортировать по каждой ячейка (по убыванию и возрастанию)? По имени, возрасту, росту, весу.
Пример по росту:
1 Василий 11 160 45
2 Дима 12 154 45
3 Федя 11 151 41

// Может кому-нибудь пригодится вывод:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print(humans[0].name, humans[0].age, humans[0].height, humans[0].weight)
    # Вывод - Вася 10 150 40
    humans[0].name = 'Василий'
    humans[0].age = 11
    humans[0].height = 160
    humans[0].weight = 45
    print(humans[0].name, humans[0].age, humans[0].height, humans[0].weight)
    # Вывод - Василий 11 160 45
 
    for i in range(len(humans)):
        print(humans[i].name, humans[i].age, humans[i].height, humans[i].weight)
    # Вывод - 
    # Василий 11 160 45
    # Федя 11 151 41
    # Дима 12 154 45
0
 Аватар для Semen-Semenich
5233 / 3478 / 1175
Регистрация: 21.03.2016
Сообщений: 8,305
12.09.2019, 16:11
dondublon, для таких входных данных "Имя", "Возраст", "Рост", "Вес" думаю словарь не лучшее решение из за 'Значения ключей — уникальны, двух одинаковых ключей в словаре быть не может.' то есть тезок уже не запишешь если использовать имя в качестве ключа, хотя доступ и обработка по имени в словаре намного проще чем из списка из экземпляров класса.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
12.09.2019, 16:15
Semen-Semenich, ну, лучшее - не лучшее, но в случае сериализации-десериализации вполне всплыть может.
0
60 / 86 / 16
Регистрация: 25.03.2019
Сообщений: 235
12.09.2019, 16:42
Лучший ответ Сообщение было отмечено wozh pkox как решение

Решение

Можете подсказать, как отсортировать по каждой ячейка (по убыванию и возрастанию)? По имени, возрасту, росту, весу.
Примерно так:
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
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
 
class Human(object):
    def __init__(self, name=None, age=0, height=0, weight=0):
        self.name = name
        self.age = age
        self.height = height
        self.weight = weight
 
 
if __name__ == "__main__":
    humans = []
    human1 = Human("Федя", 11, 151, 41)
    human2 = Human("Вася", 10, 150, 46)
    human3 = Human("Дима", 12, 154, 45)
    humans.append(human1)
    humans.append(human2)
    humans.append(human3)
    # Сортировка по имени.
    humans.sort(key=lambda obj: obj.name)
    for human in humans:
        print(human.name)
    print()
    # Сортировка по возрасту.
    humans.sort(key=lambda obj: obj.age)
    for human in humans:
        print(human.name)
    print()
    # Сортировка по росту.
    humans.sort(key=lambda obj: obj.height)
    for human in humans:
        print(human.name)
    print()
    # Сортировка по весу.
    humans.sort(key=lambda obj: obj.weight)
    for human in humans:
        print(human.name)
Добавлено через 2 минуты
p.s. Чтобы в обратную сторону, просто reverse добавьте. Примерно так:
Python
1
humans.sort(key=lambda obj: obj.name, reverse=True)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.09.2019, 16:42
Помогаю со студенческими работами здесь

Создать структуру, которая хранит имя человека и его номер телефона.Создать очередь из 5-ти структур и вывести результат
Ребята, помогите, пожалуйста, разобраться с этим заданием, я ничего не понимаю :( Буду признателен каждому Создать структуру,...

Создать информационную систему " организация работы рекламного агентства" (создать только структуру :) )
Нам препод дал задание, создать не саму систему, а как бы структуру из чего она должна создать, типо "Айти отдел, сис админ, тех...

Создать структуру
Создать структуру телефон, которая содержит информацию о мобильных телефонах, продаваемых магазином: производитель, модель, цвет,...

создать структуру
Написать программу которая выбирает из группы(16 студентов), два студента: одного отличника и одного кто хуже всего учится(троечника). ...

Создать структуру
Создать структуру Tel, содержащую поля Название, год производства, стоимость, количество единиц проданного товара. Записать в файл данные...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru