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

A Byte of Python

17.08.2019, 20:27. Показов 2973. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
print ("Hello world!")

Ребята! Помогите разобраться с "class" второй день над примером мучаюсь PyCharm выдает ошибку:
in <module> droid1 = Robot('R2-D2')
TypeError: Robot() takes no arguments


И вот саму логику объясните?!. У Нас есть "класс Роботы" - это понятно. А вот "дроиды 1 и 2" они у Нас подклассом должны идти или как?!. Ведь есть еще имена этих дроидов "Р2-Д2 и С3-РО".

Или Нам надо в функцию def__init__ привязать как-то "droid1 droid2" - Я запутался.

И может кто то дать гайд? к примеру какие идут объекты и производные от ... к примеру help ('class') или как-то что бы увидеть все возможные варианты использования и подробно можно было прочесть?

Одним словом print ('Help World!')
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
class Robot:
    '''Представляет робота с именем.'''
# Переменная класса, содержащая количество роботов
population = 0
 
def __init__(self, name,):
    '''Инициализация данных.'''
    self.name = name
    print('(Инициализация { })'.format(self.name))
# При создании этой личности, робот добавляется
# к переменной 'population'
    Robot.population += 1
 
def die (self):
    '''Я умираю.'''
    print('{ } уничтожается!'.format(self.name))
    Robot.population -= 1
    if Robot.population == 0:
        print('{ } был последним.'.format(self.name))
    else:
        print('Осталось { :d} работающих роботов.'.format(Robot.population))
 
def say_Hi(self):
    '''Приветствие робота.
    Да, они это могут.'''
    print('Приветствую! Мои хозяева называют меня { }.'.format(self.name))
 
@classmethod
def how_many (cls):
    '''Выводит численность роботов.'''
    print ("We have {:d} robots". format (cls.population))
 
 
droid1 = Robot('R2-D2')
droid1.say_Hi()
Robot.how_many()
 
droid2 = Robot('C-3PO')
droid2.say_Hi()
Robot.how_many()
 
 
print("\nЗдесь роботы могут проделать какую-то работу.\n")
 
print("Роботы закончили свою работу. Давайте уничтожим их.")
droid1.die ()
droid2.die ()
 
 
Robot.population.how_many()
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.08.2019, 20:27
Ответы с готовыми решениями:

Адресная книга
Во общем прочитав данную книжку решил попробовать решить задачу которая там дана. Вот условие задачи: &quot;Создайте собственную...

Цикл из книги A Byte of Python
Есть простенький пример в данном учебнике, привожу &quot;один в один&quot;: while True: s = input('Enter somthing: ') if s == 'exit': ...

Задача из книги A byte of python
def reverse(text): return text def is_palindrome(text): return text == reverse(text) something = input('Введите текст:...

15
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.08.2019, 21:04
Цитата Сообщение от Magistrant_420 Посмотреть сообщение
И может кто то дать гайд?
Официальную документацию пробовал читать? Гуглится по keywords: python class documentation.
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
17.08.2019, 21:37
Лучший ответ Сообщение было отмечено Magistrant_420 как решение

Решение

Цитата Сообщение от Magistrant_420 Посмотреть сообщение
Помогите разобраться с "class" второй день над примером мучаюсь PyCharm выдает ошибку:
in <module> droid1 = Robot('R2-D2')
TypeError: Robot() takes no arguments
В коде опечатки, или вы неправильно перепечатали или в книге ошибки

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
class Robot:
    '''Представляет робота с именем.'''
    # Переменная класса, содержащая количество роботов
    population = 0
     
    def __init__(self, name,):
        '''Инициализация данных.'''
        self.name = name
        print('(Инициализация {0})'.format(self.name))
    # При создании этой личности, робот добавляется
    # к переменной 'population'
        Robot.population += 1
     
    def die (self):
        '''Я умираю.'''
        print('{0} уничтожается!'.format(self.name))
        Robot.population -= 1
        if Robot.population == 0:
            print('{0} был последним.'.format(self.name))
        else:
            print('Осталось {:d} работающих роботов.'.format(Robot.population))
     
    def say_Hi(self):
        '''Приветствие робота.
        Да, они это могут.'''
        print('Приветствую! Мои хозяева называют меня {0}.'.format(self.name))
     
    @classmethod
    def how_many (cls):
        '''Выводит численность роботов.'''
        print ("We have {:d} robots". format (cls.population))
 
 
droid1 = Robot('R2-D2')
droid1.say_Hi()
Robot.how_many()
 
droid2 = Robot('C-3PO')
droid2.say_Hi()
Robot.how_many()
 
 
print("\nЗдесь роботы могут проделать какую-то работу.\n")
 
print("Роботы закончили свою работу. Давайте уничтожим их.")
droid1.die ()
droid2.die ()
 
 
Robot.how_many()
Цитата Сообщение от Magistrant_420 Посмотреть сообщение
И вот саму логику объясните?!. У Нас есть "класс Роботы" - это понятно. А вот "дроиды 1 и 2" они у Нас подклассом должны идти или как?!. Ведь есть еще имена этих дроидов "Р2-Д2 и С3-РО"
Базовые вещи вам пересказывать никто не будет, все есть в книге, видимо вы пропустили начало, вернитесь и прочитайте внимательно
2
0 / 0 / 0
Регистрация: 17.08.2019
Сообщений: 6
17.08.2019, 22:07  [ТС]
Сайтов много но они какие-то не полноценные, такое ощущение что один у другого контен переписывают.
Да и если бы Я так фсё отлично понял бы... то Я бы этот код решил бы, а так... вообщем... "google.com" за последние два дня не подходит.

Добавлено через 4 минуты
Да в русском переводе есть ошибки, этот код уже брал из сайта Swaroopa, но 34 линия in <module> droid1 = Robot('R2-D2')
TypeError: Robot() takes no arguments
... в любом случае Вы же все читали Я надеюсь эту книгу... хз... тут надо как-то это связать "дроинов 1 и 2"... только через какие команды?
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
17.08.2019, 23:01
Цитата Сообщение от Magistrant_420 Посмотреть сообщение
тут надо как-то это связать "дроинов 1 и 2"... только через какие команды?
Кого и куда связывать? Это рабочий код, вы как его запускаете?
0
0 / 0 / 0
Регистрация: 17.08.2019
Сообщений: 6
18.08.2019, 10:06  [ТС]
Через PyCharm запускаю )))

и он пишет ошибка в 34 строке in <module> droid1 = Robot('R2-D2')
TypeError: Robot() takes no arguments

Может у меня как-то не так настроен PyCharm?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.08.2019, 10:15
Magistrant_420, тебе tooru выложил исправленный рабочий код.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
18.08.2019, 10:25
Magistrant_420, сказал бы я что не настроено...
ты слышал что в питоне есть такая вещь - отступы? 4 пробела... твой класс Робот пуст, в нем нет ни одной функции, они лежат на его уровне, а должны лежать внутри (отступы!)
1) расставляем отступы чтобы все функции оказались внутри класса
2) исправляем принты, используем модные и молодежные f-strings
3) долго думаем над строкой и исправляем ее
Цитата Сообщение от Magistrant_420 Посмотреть сообщение
Robot.population.how_many()
тебе же ниже человек написал поправленный код, почему не взял себе?
0
0 / 0 / 0
Регистрация: 17.08.2019
Сообщений: 6
18.08.2019, 11:00  [ТС]
Млин! точно рабочий! Спасибо!!!
Не взял сразу бо думал что это просто цитата... Млин надо было написать ВОТ ИСПРАВИЛ!
Спасибо...

Но... Окей... Я увидел что "population" нужно было вставить табом в массив класса Robot.
Объясните мне почему у Вас тот же "Self" синтаксис выделяет как фиолетовый а в моем коде он зелёный (((
И Я вот сейчас редактирую свой код по Tooru! и в моем все равно ошибки из за того что такие значения как SELF...

Добавлено через 3 минуты
аааа.... фсё понял!!! Сама функция "def" должна находиться в классе "class Robot"
Млин!!! Спасибо!!! Я понял теперь ....
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
18.08.2019, 11:03
Magistrant_420, какая разница как выделяет, ошибки то какие?
кстати очень помогает перевести ошибку, посмотреть на строку, в ней указанную и немного подумать

Добавлено через 35 секунд
Цитата Сообщение от Magistrant_420 Посмотреть сообщение
Сама функция "def" должна находиться в классе "class Robot"
а в книге про это не было? про отступы, оформление? и там код без отступов?
0
0 / 0 / 0
Регистрация: 17.08.2019
Сообщений: 6
18.08.2019, 12:57  [ТС]
чёй-то у меня не выходит этот f-string
PyCharm пишет: Process finished with exit code 0
Но как print не выводит

name = "Eric"
age = 74
f"Здравствуйте, {name} . Вам {age} ."

0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.08.2019, 13:45
Цитата Сообщение от Magistrant_420 Посмотреть сообщение
синтаксис выделяет как фиолетовый а в моем коде он зелёный (((
В пайчарме хоть сербурмалиновым можно сделать. Это темы оформления.
Цитата Сообщение от Magistrant_420 Посмотреть сообщение
чёй-то у меня не выходит этот f-string
Питон-то какой используется? f-строки вроде с 3.6 пошли.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
18.08.2019, 14:12
Цитата Сообщение от Magistrant_420 Посмотреть сообщение
f"Здравствуйте, {name} . Вам {age} ."
а принт то где? это ты только строки сформировал
0
0 / 0 / 0
Регистрация: 17.08.2019
Сообщений: 6
18.08.2019, 15:49  [ТС]
print (f"Здравствуйте, {name} . Вам {age} .")

Эйто другое дела ))) но в PEP 498 ничего об этом не сказано)))
хотя делал через PowerShell pip install fstring

Python 3.7.0 a PyCharm только что с 2017.1.8 обновил до 2019

Уже в 2019 PyCharm работает через print (f"Здравствуйте, {name} . Вам {age} .")
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
18.08.2019, 16:00
Цитата Сообщение от Magistrant_420 Посмотреть сообщение
хотя делал через PowerShell pip install fstring
не надо ничего устанавливать, это все так работает в питоне 3
ставь версию 3.7.4
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
18.08.2019, 21:51
Цитата Сообщение от Magistrant_420 Посмотреть сообщение
Ведь есть еще имена этих дроидов "Р2-Д2 и С3-РО".
Р2-Д2 и С3-РО это уникальные имена конкретных роботов или название моделей роботов, которых может выпускаться n-ное количество?
В Вашем коде они выглядят, как конкретные имена, конкретных экземпляров роботов.

Добавлено через 18 минут
Если Вы рассматриваете конкретных роботов из фильма "Звездные войны", то это конкретные экземпляры роботов, относящиеся к этому фильму. Если же Вы рассматриваете игрушки, созданные по образцу роботов из фильма, то это будут модели роботов, и тогда нужно для этих моделей создавать подклассы класса робот, в которых будут отражены их индивидуальные особенности, отличающие их от роботов других моделей, хотя бы названием модели.
Но тогда название модели должно не задаваться, а быть изначально привязанным к этому подклассу роботов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.08.2019, 21:51
Помогаю со студенческими работами здесь

Проблемы с первой задачей из книги ''A Byte of Python''
По какой-то причине не работает код из книги ''A Byte of Python''. Ребзя, можете помочь? Выдаёт такую ошибку: &quot;Создание резервной...

Не могу понять тему, книга a byte of python
Изучаю python, но не могу понять одну тему, вообще не врубаюсь даже что тут происходит и что для чего нужно, объясните, пожалуйста 10.7...

Проблема с бекапом файлов на примере книги Byte of Python
Добрый вечер, дорогие форумчане, возник вопрос: что я делаю не так? Переписал код по книге Swaroop'a, установил gnuwin32(на 10 windows),...

Нельзя преобразовать тип function(a: byte;b: byte): byte к integer (Списки)
Создать список из целых чисел.Поменять в списке местами максимальный и минимальный элементы Проблемы c процедурами Pos и Chang: пос...

Не работает программа резервного копирования в книге Byte of Python
Ошибок в своем коде не нашёл. Попробовал решить через zip_command = &quot;7z a -tzip {0} {1}&quot;.format(target, ' '.join(source)) (Не вышло). Через...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru