Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 21, 2017 13:54:03

korifa
Зарегистрирован: 2017-07-01
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

 class Person:
	def __init__(self, name, age, pay=0, job=None):
		self.name = name
		self.age = age
		self.pay = pay
		self.job = job
	def lastName(self):
		return self.name.split()[-1]
	def giveRaise(self, percent):
		self.pay *= (1.0 + percent)
	def __str__(self):
		return ("<%s => %s: %s, %s>" %
		         ( self.__class__.__name__, self.name, self.job, self.pay))
	
class Manager(Person):
	def __init__(self, name, age, pay):
		Person.__init__(self, name, age, pay, "manager")
	def giveRaise(self, percent, bonus=0.1):
		Person.__init__(self, percent + bonus)
if __name__ == "__main__":
	bob = Person('Bob Smith', 44)
	sue = Person("Sue Jones", 47, 40000, "hardware")
	tom = Manager(name="Tom Doe", age=50, pay=50000)
	print(sue, sue.pay, sue.lastName())
	for obj in (bob, sue, tom):
		obj.giveRaise(0.10)
		print(obj)

как исправить ошибку:
 <Person => Sue Jones: hardware, 40000> 40000 Jones
<Person => Bob Smith: None, 0.0>
<Person => Sue Jones: hardware, 44000.0>
Traceback (most recent call last):
  File "class_bd.py", line 26, in <module>
    obj.giveRaise(0.10)
  File "class_bd.py", line 19, in giveRaise
    Person.__init__(self, percent + bonus)
TypeError: __init__() missing 1 required positional argument: 'age'

Отредактировано korifa (Авг. 21, 2017 13:55:30)

Офлайн

#2 Авг. 21, 2017 14:04:26

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Вопросы от новичков.

А что вы делаете в методе Manager.giveRaise?

Офлайн

#3 Авг. 21, 2017 14:31:16

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Вопросы от новичков.

korifa
как исправить ошибку:
предположу что вы хотели написать
Person.giveRaise(self, percent + bonus) вместо Person.__init__(self, percent + bonus)



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#4 Авг. 21, 2017 15:03:49

korifa
Зарегистрирован: 2017-07-01
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

PEHDOM
в точку

Офлайн

#5 Авг. 22, 2017 15:47:37

sanik
Зарегистрирован: 2017-08-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Воспользуюсь случаем и задпм свой простой пример в этой теме.

В общем сейчас накачал видеообучения по питону и там задача. Бьюсь третий день и никак.
Есть список. И надо сделать так, если в списке есть наложения, то этот элемент списка заброкавать. Интересует как составить условие.
Например:

[code python][14, 21], [23, 30], [26, 36], [40, 50][code python][/code][/code]

Во втором и третьем блоке цыфры накладываются друг на друга. А не должны. Подскажите как составить условие

Отредактировано sanik (Авг. 22, 2017 15:52:09)

Офлайн

#6 Авг. 22, 2017 16:37:26

Vintets
Зарегистрирован: 2016-07-05
Сообщения: 41
Репутация: +  6  -
Профиль   Отправить e-mail  

Вопросы от новичков.

sanik
Описывай задачу понятно. Что за “наложения в списке”? Кто куда налаживает? Какой из элементов списка брАкОвать?

Поиграем в расшифровку.
У тебя есть список?
Который содержит списки из 2 элементов (чисел) указывающих на начало и конец диапазонов?
Проверить диапазоны на пересечение, и те, что пересекаются… нужно… Что? Удалить? Запомнить в другом списке? Вывести их индексы?
“Браковать” все диапазоны которые накладываются?

Может это вообще не диапазоны, а я тут разошёлся

Отредактировано Vintets (Авг. 22, 2017 16:38:37)

Офлайн

#7 Авг. 22, 2017 17:20:13

sanik
Зарегистрирован: 2017-08-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Vintets
Извиняюсь за неправильно поставленную задачу.
Допустим цыфры в блоке это дата прибытия и дата выбытия. И нельзя что бы они накладывались. Т.е. ты не можешь прибыть, пока ты не выбыл еще.

Вы все правильно поеяли.

А с этими блоками что. Если есть наложение, то программа пользователю показывает, где он не правильно ввел даты и просит ввести заново.
Но это я знаю как сделать.

У меня весь ступор именно в написании этого условия. Что бы дата последующего прибытия была больше даты убытия. Надеюсь понятно описал.

Офлайн

#8 Авг. 22, 2017 22:54:09

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Вопросы от новичков.

 [26, 36], [40, 50]
Какие интересные у вас даты
 dates = [[14, 21], [23, 30], [26, 31]]
def check_dates_ranges(dates_ranges):
    for previous, next in zip(dates_ranges, dates_ranges[1:]):
        if previous[1] > next[0]:
            print('Incorrect range {}'.format(next))
check_dates_ranges(dates)

Отредактировано Stright (Авг. 22, 2017 22:55:18)

Офлайн

#9 Авг. 25, 2017 08:22:21

Helene@9
Зарегистрирован: 2017-08-21
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Здравствуйте! Подскажите пожалуйста в чем проблема?
пишу код:

 a=int(input())
b=int(input())
c=int(input())
d=int(input())
for i in range(c,d+1):
print('\t',i,end='') 
print()
for i in range(a,b+1):
        print (i,end='')
        for k in range(c,d+1):
         print('\t',k*i)
и выводит
5 6
7 35
42
8 40
48
9 45
54
10 50
60

а должно:
5 6
7 35 42
8 40 48
9 45 54
10 50 60
может табуляции где не хватает, но куда ее прописать никак не пойму. Заранее спасибо

Отредактировано FishHook (Авг. 25, 2017 08:27:16)

Офлайн

#10 Авг. 25, 2017 08:27:26

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

Вопросы от новичков.

Helene@9



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version