Найти - Пользователи
Полная версия: Вопросы от новичков.
Начало » Python для новичков » Вопросы от новичков.
1 2 3 4 None 16 17 18 19 20 21 22 23 None 28 29 30 31
korifa
 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'
Stright
А что вы делаете в методе Manager.giveRaise?
PEHDOM
korifa
как исправить ошибку:
предположу что вы хотели написать
Person.giveRaise(self, percent + bonus) вместо Person.__init__(self, percent + bonus)
korifa
PEHDOM
в точку
sanik
Воспользуюсь случаем и задпм свой простой пример в этой теме.

В общем сейчас накачал видеообучения по питону и там задача. Бьюсь третий день и никак.
Есть список. И надо сделать так, если в списке есть наложения, то этот элемент списка заброкавать. Интересует как составить условие.
Например:
[code python][14, 21], [23, 30], [26, 36], [40, 50][code python][/code][/code]

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

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

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

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

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

У меня весь ступор именно в написании этого условия. Что бы дата последующего прибытия была больше даты убытия. Надеюсь понятно описал.
Stright
 [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)
Helene@9
Здравствуйте! Подскажите пожалуйста в чем проблема?
пишу код:
 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
Helene@9
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB