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

Классы Python

15.12.2019, 20:29. Показов 880. Ответов 4

Студворк — интернет-сервис помощи студентам
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
import random
 
class Railway_ticket:
"""Документация класса билета на поезд
id-номер билета
price-цена билета
name1,name2-имя,фамилия
date_day,date_month,date_year-дата поезда
time_hour_start,time_minutes_start-время отправления поезда
time_hour_end,time_minutes_end-время прибытия поезда
place-место в вагоне
railway_carriage-номер вагона
type_of_railway_carriage- тип вагона
1-Плацкарт(54)
2-КУпе(36)
3-Св(18)
number_of_train-номер поезда
type_of_ticket-тип билета
1-взрослый
2-детский
3-студенсткий
4-льготный
"""
id=0
price=-1
name1=""
name2=""
date_day=-1
date_month=-1
date_year=-1
time_hour_start=-1
time_minutes_start=-1
time_hour_end=-1
time_minutes_end=-1
place=-1
railway_carriage=-1
type_of_railway_carriage=-1
number_of_train=-1
type_of_ticket=-1
# до 129 строчки сеттеры
 
def set_name1(self,n1):
if type(n1)==type(int()) and type(n1)==type(float()):
return -1
self.name1=n1
return self.date_day
 
def set_name2(self,n2):
if type(n2)==type(int()) and type(n2)==type(float()):
return -1
self.name2=n2
return self.name2
 
def set_price(self,p):
if type(p)!=type(int()) and type(p)!=type(float()):
return -1
if p<0:
return print("Некорректные данные")
self.price=p
return self.price
 
def set_date_day(self,dd):
if type(dd)!=type(int()) and type(dd)!=type(float()):
return -1
if dd<=0 or dd>31:
return print("Некорректные данные")
self.date_day=dd
return self.date_day
 
def set_date_month(self,dm):
if type(dm)!=type(int()) and type(dm)!=type(float()):
return -1
if dm<=0 or dm>12:
return print("Некорректные данные")
self.date_month=dm
return self.date_month
 
def set_date_year(self,dy):
if type(dy)!=type(int()) and type(dy)!=type(float()):
return -1
if dy<2019:
return print("Некорректные данные")
self.date_year=dy
return self.date_year
 
def set_time_hour_start(self,th):
if type(th)!=type(int()) and type(th)!=type(float()):
return -1
if th<=0 or th>24:
return print("Некорректные данные")
self.time_hour_start=th
return self.time_hour_start
 
def set_time_minutes_start(self,tm):
if type(tm)!=type(int()) and type(tm)!=type(float()):
return -1
if tm<=0 or tm>60:
return print("Некорректные данные")
self.time_minutes_start=tm
return self.time_minutes_start
 
def set_time_hour_end(self,thE):
if type(thE)!=type(int()) and type(thE)!=type(float()):
return -1
if thE<=0 or thE>24:
return print("Некорректные данные")
self.time_hour_end=thE
return self.time_hour_end
 
def set_time_minutes_end(self,tmE):
if type(tmE)!=type(int()) and type(tmE)!=type(float()):
return -1
if tmE<=0 or tmE>60:
return print("Некорректные данные")
self.time_minutes_end=tmE
return self.time_minutes_end
 
def set_type_of_railway_carriage(self,tc):
if type(tc)!=type(int()) and type(tc)!=type(float()):
return -1
if tc<=0 or tc>3:
return print("Некорректные данные")
self.type_of_railway_carriage=tc
return self.type_of_railway_carriage
 
def set_place(self,pl):
if type(pl)!=type(int()) and type(pl)!=type(float()):
return -1
if pl<=0:
return print("Некорректные данные")
if self.type_of_railway_carriage==1 and pl>54:
return print("Некорректные данные")
if self.type_of_railway_carriage==2 and pl>36:
return print("Некорректные данные")
if self.type_of_railway_carriage==3 and pl>18:
return print("Некорректные данные")
self.place=pl
return self.place
 
def set_number_of_train(self,num):
if type(num)!=type(int()) and type(num)!=type(float()):
return -1
self.number_of_train=num
return self.number_of_train
 
def set_railway_carriage(self,rc):
if type(rc)!=type(int()) and type(rc)!=type(float()):
return -1
if rc<=0 or rc>50:
return print("Некорректные данные")
self.railway_carriage=rc
return self.railway_carriage
 
def set_type_of_ticket(self,tt):
if type(tt)!=type(int()) and type(tt)!=type(float()):
return -1
if tt<=0 or tt>4:
return print("Некорректные данные")
self.type_of_ticket=tt
return self.type_of_ticket
 
def type_of_travel(self):
"""Данный метод определяет ночной или дневной рейс"""
if self.time_hour_end >=22 or self.time_hour_end <=6:
print("Ночной рейс")
else:
print("Дневной рейс")
 
def __init__(self,price,name1, name2, date_day, date_month, date_year, time_hour_start,time_minutes_start, time_hour_end,time_minutes_end,place, railway_carriage, type_of_railway_carriage,number_of_train,type_of_ticket):
"""Конструктор"""
self.set_price(price)
self.set_name1(name1)
self.set_name2(name2)
self.set_date_day(date_day)
self.set_date_month(date_month)
self.set_date_year(date_year)
self.set_time_hour_start(time_hour_start)
self.set_time_minutes_start(time_minutes_start)
self.set_time_hour_end(time_hour_end)
self.set_time_minutes_end(time_minutes_end)
self.set_place(place)
self.set_railway_carriage(railway_carriage)
self.set_type_of_railway_carriage(type_of_railway_carriage)
self.set_number_of_train(number_of_train)
self.set_type_of_ticket(type_of_ticket)
print("Конструктор выполнен")
 
def __del__(self):
print("Выполняется деструктор")
 
 
def price_with_privilege(self):
"""Данный метод считает цену билета со скидкой в зависимости от соц.льгот """
if self.type_of_ticket==4:
discount=(self.price/100)*50
price_with_discount=self.price-discount
print("Льготный билет стоит=",price_with_discount)
if self.type_of_ticket==3:
discount=(self.price/100)*20
price_with_discount=self.price-discount
print("Студенческий билет стоит=",price_with_discount)
if self.type_of_ticket==2:
discount=(self.price/100)*30
price_with_discount=self.price-discount
print("Детский билет стоит=",price_with_discount)
if self.type_of_ticket==1:
print("У вас нету соц.льгот.Билет стоит=",self.price)
 
'''def price_in_foreign_currency(self):
"""Данный метод переводит цену из грн в евро и доллары """
euro_price=self.price_with_privilege()/26
print("Цена билета в євро=",euro_price)
usd_price=self.price_with_privilege()/24
print("Цена билета в долларах=",usd_price)
По прежнему не работает
'''
def id_up(self):
"""ДАнный метод выдает каждому билету рандомный ID в целях безопасности"""
id=random.randint(0,1000000000)
print("ID:",id)
 
class Bank_operation(Railway_ticket):
"""Данный клас позволяет работать с банковскими картами"""
number_of_card=-1
cvv2=-1
month_end=-1
year_end=-1
 
def set_number_of_card(self,num):
if type(num)!=type(int()) and type(num)!=type(float()):
return -1
list=[num]
if len(list)>16 or len(list)<16:
return print("Некорректные данные")
self.number_of_card=list
return self.number_of_card
 
def set_cvv2(self,cvv):
if type(cvv)!=type(int()) and type(cvv)!=type(float()):
return -1
if cvv<100 or cvv>999:
return print("Некорректные данные")
self.cvv2=cvv
return self.cvv2
 
def set_month_end(self,me):
if type(me)!=type(int()) and type(me)!=type(float()):
return -1
if me<=0 or me>12:
return print("Некорректные данные")
self.month_end=me
return self.month_end
 
def set_year_end(self,ye):
if type(ye)!=type(int()) and type(ye)!=type(float()):
return -1
if ye<2019:
return print("Некорректные данные")
self.year_end=ye
return self.year_end
 
def __init__(self,number_of_card,cvv2,month_end,year_end):
"""Конструктор"""
self.set_number_of_card(number_of_card)
self.set_cvv2(cvv2)
self.set_month_end(month_end)
self.set_year_end(year_end)
print("Конструктор выполнен")
 
def __del__(self):
print("Выполняется деструктор")
 
def type_of_bank_card(self,set_number_of_card):
a=self.number_of_card
if a[0]==3:
print("Вы используете American Express")
if a[0]==4:
print("Вы используете Visa")
if a[0]==5:
print("Вы используете Master Card")
else :
print("Error")
 
class Order_ticket(Railway_ticket):
"""Данный класс отвечает за заказ жд билета"""
number_of_phone=-1
day_of_order_ticket=-1
month_of_order_ticket=-1
year_of_order_ticket=-1
minutes_of_order_ticket=-1
hours_of_order_ticket=-1
 
def set_number_of_phone(self,nu):
if type(nu)!=type(int()) and type(nu)!=type(float()):
return -1
if nu<=000000000 or nu>999999999:
return print("Некорректные данные")
self.number_of_phone=nu
return self.number_of_phone
 
def set_day_of_order_ticket(self,dot):
if type(dot)!=type(int()) and type(dot)!=type(float()):
return -1
if dot<=0 or dot>31:
return print("Некорректные данные")
self.day_of_order_ticket=dot
return self.day_of_order_ticket
 
def set_month_of_order_ticket(self,mot):
if type(mot)!=type(int()) and type(mot)!=type(float()):
return -1
if mot<=0 or mot>12:
return print("Некорректные данные")
self.month_of_order_ticket=mot
return self.month_of_order_ticket
 
def set_year_of_order_ticket(self,yot):
if type(yot)!=type(int()) and type(yot)!=type(float()):
return -1
if yot<2019:
return print("Некорректные данные")
self.year_of_order_ticket=yot
return self.year_of_order_ticket
 
def set_hours_of_order_ticket(self,tot):
if type(tot)!=type(int()) and type(tot)!=type(float()):
return -1
if tot<=0 or tot>24:
return print("Некорректные данные")
self.hours=tot
return self.hours
 
def set_time_of_order_ticket_minutes(self,totm):
if type(totm)!=type(int()) and type(totm)!=type(float()):
return -1
if totm<=0 or totm>60:
return print("Некорректные данные")
self.minutes_of_order_ticket=totm
return self.minutes_of_order_ticket
 
def __init__(self,number_of_phone,month_of_order_ticket,day_of_order_ticket,year_of_order_ticket,hours_of_order_ticket,minutes_of_order_ticket):
self.set_number_of_phone(number_of_phone)
self.set_month_of_order_ticket(month_of_order_ticket)
self.set_year_of_order_ticket(year_of_order_ticket)
self.set_day_of_order_ticket(day_of_order_ticket)
self.set_hours_of_order_ticket(hours_of_order_ticket)
self.set_time_of_order_ticket_minutes(minutes_of_order_ticket)
print("Конструктор выполнен")
 
def __del__(self):
print("Деструктор выполнен")
 
def type_of_day_ticket(self,hours_of_order_ticket):
if self.hours_of_order_ticket>=18:
print("Билет заказан вечером")
if self.hours_of_order_ticket<=8:
print("Билет заказан утром")
if self.hours_of_order_ticket>=9 and self.hours_of_order_ticket <=17:
print("Билет заказан днем")
 
test=Bank_operation(5168148814881488,797,10,2020)
test.type_of_bank_card
print(Railway_ticket.__doc__)
Лабораторная 1
Задание 1. Разработать класс, описывающий некоторый объект из заданной предметной области. Класс должен содержать: – строку документации; – не менее 10 атрибутов (переменных); – не менее 5 методов (из которых хотя бы один описан вне класса), выполняющих обработку атрибутов класса;
– сеттеры (методы изменения значений) для тех атрибутов класса, для которых теоретически могут быть заданы недопустимые значения. 2. В основной программе выполнить следующее: 2.1. Вывести на экран документацию класса. 2.2. Создать и инициализировать различными значениями пять экземпляров разработанного класса. 2.3. Создать и инициализировать псевдослучайными значениями одномерный массив из 100 экземпляров класса. 2.4. Создать и инициализировать псевдослучайными значениями двумерный массив из 100*100 экземпляров класса. 2.5. В созданном одномерном массиве упорядочить элементы по возрастанию одного из атрибутов класса (на свое усмотрение). 2.6. В созданном двумерном массиве найти элементы с максимальным и минимальным значениями одного из атрибутов класса (на свое усмотрение). 2.7. Удалить из памяти двумерный массив, одномерный массив, а также все одиночные экземпляры класса с помощью стандартной функции del.

Лабораторная работа №2
Конструкторы и деструкторы

Исходными данными для выполнения лабораторной работы является программа, разработанная в лабораторной работе №1.

Задание
1. Добавить в класс конструктор, выполняющий инициализацию всех или некоторых атрибутов экземпляра класса. Те атрибуты, которые инициализируются в конструкторе, удалить из описания класса.
2. Сделать так, чтобы инициализация атрибутов в конструкторе выполнялась с помощью сеттеров.
3. Добиться того, чтобы при создании одномерного массива (списка) из 100 экземпляров класса конструктор вызывался при создании каждого элемента массива.
4. Добиться того, чтобы при создании двумерного массива (списка списков) размерностью 100 на 100 экземпляров класса конструктор вызывался при создании каждого элемента массива.
5. Добавить в класс деструктор (финализатор). В теле деструктора реализовать вывод сообщения о том, что деструктор выполнился. Убедиться, что при завершении программы деструктор вызывается для каждого элемента одномерного и двумерного массивов.

Лабораторная 3
Создать иерархию классов с использованием механизма наследования. В качестве базового класса должен выступать класс, разработанный в лабораторной работе №2. Иерархия классов должна отвечать следующим требованиям:
1. В иерархии должно быть не менее двух уровней и не менее четырех классов (вместе с базовым классом).
2. Каждый класс-потомок должен содержать хотя бы один собственный атрибут и хотя бы один метод.
3. В каждом классе-потомке должен быть собственный конструктор.
В основной программе подготовить небольшой демонстрационный пример, показывающий возможности работы с классами-потомками: создание экземпляра класса-потомка, доступ к атрибутам и методам класса-предка, порядок вызова конструкторов и т.п.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2019, 20:29
Ответы с готовыми решениями:

Классы Python
Нужна абсолютно любая программа, написанная с помощью классов. Не шарю в этом, нужно срочно для универа. Помогите

Классы python
Реализуйте класс SquareFunction, экземпляры которого при инициализации получают коэффициенты a, b, c. При вызове объекта как функции с...

С++ классы в Python
Добрый день, коллеги. Новая проблема в том же коде (выполнение С++-классов в Python). test.cpp: #include &lt;iostream&gt; ...

4
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,295
15.12.2019, 20:34
ripazha2019, вы наверно то же с яндекс лицея?
0
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 6
15.12.2019, 20:39  [ТС]
Нет, если знаете как исправить помогите пожалуйста
0
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,295
15.12.2019, 21:15
тут не исправлять нужно а писать с нуля с отступами и по учебнику
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def __init__(self,price,name1, name2, date_day, date_month, date_year, time_hour_start,time_minutes_start, time_hour_end,time_minutes_end,place, railway_carriage, type_of_railway_carriage,number_of_train,type_of_ticket):
"""Конструктор"""
   self.set_price(price)
   self.set_name1(name1)
   self.set_name2(name2)
   self.set_date_day(date_day)
   self.set_date_month(date_month)
   self.set_date_year(date_year)
   self.set_time_hour_start(time_hour_start)
   self.set_time_minutes_start(time_minutes_start)
   self.set_time_hour_end(time_hour_end)
   self.set_time_minutes_end(time_minutes_end)
   self.set_place(place)
   self.set_railway_carriage(railway_carriage)
   self.set_type_of_railway_carriage(type_of_railway_carriage)
   self.set_number_of_train(number_of_train)
   self.set_type_of_ticket(type_of_ticket)
   print("Конструктор выполнен")
Добавлено через 5 минут
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
class Railway_ticket:
    """Документация класса билета на поезд
    id-номер билета
    price-цена билета
    name1,name2-имя,фамилия
    date_day,date_month,date_year-дата поезда
    time_hour_start,time_minutes_start-время отправления поезда
    time_hour_end,time_minutes_end-время прибытия поезда
    place-место в вагоне
    railway_carriage-номер вагона
    type_of_railway_carriage- тип вагона
    1-Плацкарт(54)
    2-КУпе(36)
    3-Св(18)
    number_of_train-номер поезда
    type_of_ticket-тип билета
    1-взрослый
    2-детский
    3-студенсткий
    4-льготный
    """
 
    def __init__(self,price,name1, name2, date_day, date_month, date_year, time_hour_start,time_minutes_start, time_hour_end,time_minutes_end,place, railway_carriage, type_of_railway_carriage,number_of_train,type_of_ticket):
    """Конструктор"""
        self.price = set_price(price)
        self.name1 = set_name1(name1)
        self.name2 = set_name2(name2)
        self.date_month = set_date_day(date_day)
        #............ и так для каждого атр.
        self.type_of_ticket = set_type_of_ticket(type_of_ticket)
        print("Конструктор выполнен")
0
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 6
15.12.2019, 21:48  [ТС]
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
import random 
 
class Railway_ticket:
    """Документация класса билета на поезд
    id-номер билета
    price-цена билета
    name1,name2-имя,фамилия
    date_day,date_month,date_year-дата поезда
    time_hour_start,time_minutes_start-время отправления поезда
    time_hour_end,time_minutes_end-время прибытия поезда
    place-место в вагоне
    railway_carriage-номер вагона
    type_of_railway_carriage- тип вагона
    1-Плацкарт(54)
    2-КУпе(36)
    3-Св(18)
    number_of_train-номер поезда
    type_of_ticket-тип билета
    1-взрослый
    2-детский
    3-студенсткий
    4-льготный
    """
    id=0
    price=-1
    name1=""
    name2=""
    date_day=-1
    date_month=-1
    date_year=-1
    time_hour_start=-1
    time_minutes_start=-1
    time_hour_end=-1
    time_minutes_end=-1
    place=-1
    railway_carriage=-1
    type_of_railway_carriage=-1
    number_of_train=-1
    type_of_ticket=-1 
    # до 129 строчки сеттеры
    
    def set_name1(self,n1):
        if type(n1)==type(int()) and type(n1)==type(float()):
            return -1
        self.name1=n1
        return self.date_day
 
    def set_name2(self,n2):
        if type(n2)==type(int()) and type(n2)==type(float()):
            return -1 
        self.name2=n2
        return self.name2 
 
    def set_price(self,p):
        if type(p)!=type(int()) and type(p)!=type(float()):
            return -1
        if p<0:
            return print("Некорректные данные")
        self.price=p
        return self.price
    
    def set_date_day(self,dd):
        if type(dd)!=type(int()) and type(dd)!=type(float()):
            return -1
        if dd<=0 or dd>31:
            return print("Некорректные данные")
        self.date_day=dd
        return self.date_day
    
    def set_date_month(self,dm):
        if type(dm)!=type(int()) and type(dm)!=type(float()):
            return -1
        if dm<=0 or dm>12:
            return print("Некорректные данные")
        self.date_month=dm
        return self.date_month
    
    def set_date_year(self,dy):
        if type(dy)!=type(int()) and type(dy)!=type(float()):
            return -1
        if dy<2019:
            return print("Некорректные данные")
        self.date_year=dy
        return self.date_year
    
    def set_time_hour_start(self,th):
        if type(th)!=type(int()) and type(th)!=type(float()):
            return -1
        if th<=0 or th>24:
            return print("Некорректные данные")
        self.time_hour_start=th
        return self.time_hour_start
    
    def set_time_minutes_start(self,tm):
        if type(tm)!=type(int()) and type(tm)!=type(float()):
            return -1
        if tm<=0 or tm>60:
            return print("Некорректные данные")
        self.time_minutes_start=tm
        return self.time_minutes_start
    
    def set_time_hour_end(self,thE):
        if type(thE)!=type(int()) and type(thE)!=type(float()):
            return -1
        if thE<=0 or thE>24:
            return print("Некорректные данные")
        self.time_hour_end=thE
        return self.time_hour_end
    
    def set_time_minutes_end(self,tmE):
        if type(tmE)!=type(int()) and type(tmE)!=type(float()):
            return -1
        if tmE<=0 or tmE>60:
            return print("Некорректные данные")
        self.time_minutes_end=tmE
        return self.time_minutes_end
    
    def set_type_of_railway_carriage(self,tc):
        if type(tc)!=type(int()) and type(tc)!=type(float()):
            return -1
        if tc<=0 or tc>3:
            return print("Некорректные данные")
        self.type_of_railway_carriage=tc
        return self.type_of_railway_carriage
    
    def set_place(self,pl):
        if type(pl)!=type(int()) and type(pl)!=type(float()):
            return -1
        if pl<=0:
            return print("Некорректные данные")
        if self.type_of_railway_carriage==1 and pl>54:
            return print("Некорректные данные")
        if self.type_of_railway_carriage==2 and pl>36:
            return print("Некорректные данные")
        if self.type_of_railway_carriage==3 and pl>18:
            return print("Некорректные данные")
        self.place=pl
        return self.place
 
    def set_number_of_train(self,num):
        if type(num)!=type(int()) and type(num)!=type(float()):
            return -1
        self.number_of_train=num
        return self.number_of_train
 
    def set_railway_carriage(self,rc):
        if type(rc)!=type(int()) and type(rc)!=type(float()):
            return -1
        if rc<=0 or rc>50:
            return print("Некорректные данные")
        self.railway_carriage=rc
        return self.railway_carriage
    
    def set_type_of_ticket(self,tt):
        if type(tt)!=type(int()) and type(tt)!=type(float()):
            return -1
        if tt<=0 or tt>4:
            return print("Некорректные данные")
        self.type_of_ticket=tt
        return self.type_of_ticket
    
    def type_of_travel(self):
        """Данный метод определяет ночной или дневной рейс"""
        if self.time_hour_end >=22 or self.time_hour_end <=6:
            print("Ночной рейс")
        else:
            print("Дневной рейс")
    
    def __init__(self,price,name1, name2, date_day, date_month, date_year, time_hour_start,time_minutes_start, time_hour_end,time_minutes_end,place, railway_carriage, type_of_railway_carriage,number_of_train,type_of_ticket):
"""Конструктор"""
   self.set_price(price)
   self.set_name1(name1)
   self.set_name2(name2)
   self.set_date_day(date_day)
   self.set_date_month(date_month)
   self.set_date_year(date_year)
   self.set_time_hour_start(time_hour_start)
   self.set_time_minutes_start(time_minutes_start)
   self.set_time_hour_end(time_hour_end)
   self.set_time_minutes_end(time_minutes_end)
   self.set_place(place)
   self.set_railway_carriage(railway_carriage)
   self.set_type_of_railway_carriage(type_of_railway_carriage)
   self.set_number_of_train(number_of_train)
   self.set_type_of_ticket(type_of_ticket)
   print("Конструктор выполнен")
    
    def __del__(self):
        print("Выполняется деструктор")
        
    
    def price_with_privilege(self):
        """Данный метод считает цену билета со скидкой в зависимости от соц.льгот """
        if self.type_of_ticket==4:
            discount=(self.price/100)*50
            price_with_discount=self.price-discount
            print("Льготный билет стоит=",price_with_discount)
        if self.type_of_ticket==3:
            discount=(self.price/100)*20
            price_with_discount=self.price-discount
            print("Студенческий билет стоит=",price_with_discount)
        if self.type_of_ticket==2:
            discount=(self.price/100)*30
            price_with_discount=self.price-discount
            print("Детский билет стоит=",price_with_discount)
        if self.type_of_ticket==1:
            print("У вас нету соц.льгот.Билет стоит=",self.price)
    
    '''def price_in_foreign_currency(self):
        """Данный метод переводит цену из грн в евро и доллары """
        euro_price=self.price_with_privilege()/26
        print("Цена билета в євро=",euro_price)
        usd_price=self.price_with_privilege()/24
        print("Цена билета в долларах=",usd_price)
        По прежнему не работает
        '''
    def id_up(self):
        """ДАнный метод выдает каждому билету рандомный ID в целях безопасности"""
        id=random.randint(0,1000000000)
        print("ID:",id)
 
class Bank_operation(Railway_ticket):
    """Данный клас позволяет работать с банковскими картами"""
    number_of_card=-1
    cvv2=-1
    month_end=-1
    year_end=-1
 
    def set_number_of_card(self,num):
        if type(num)!=type(int()) and type(num)!=type(float()):
            return -1
        list=[num]
        if len(list)>16 or len(list)<16:
            return print("Некорректные данные")
        self.number_of_card=list
        return self.number_of_card
    
    def set_cvv2(self,cvv):
        if type(cvv)!=type(int()) and type(cvv)!=type(float()):
            return -1
        if cvv<100 or cvv>999:
            return print("Некорректные данные")
        self.cvv2=cvv
        return self.cvv2
    
    def set_month_end(self,me):
        if type(me)!=type(int()) and type(me)!=type(float()):
            return -1
        if me<=0 or me>12:
            return print("Некорректные данные")
        self.month_end=me
        return self.month_end
    
    def set_year_end(self,ye):
        if type(ye)!=type(int()) and type(ye)!=type(float()):
            return -1
        if ye<2019:
            return print("Некорректные данные")
        self.year_end=ye
        return self.year_end
    
    def __init__(self,number_of_card,cvv2,month_end,year_end):
        """Конструктор"""
        self.set_number_of_card(number_of_card)
        self.set_cvv2(cvv2)
        self.set_month_end(month_end)
        self.set_year_end(year_end)
        print("Конструктор выполнен")
 
    def __del__(self):
        print("Выполняется деструктор")
    
    def type_of_bank_card(self,set_number_of_card):
        a=self.number_of_card
        if a[0]==3:
            print("Вы используете American Express")
        if a[0]==4:
            print("Вы используете Visa")
        if a[0]==5:
            print("Вы используете Master Card")
        else :
            print("Error")
 
class Order_ticket(Railway_ticket):
    """Данный класс отвечает за заказ жд билета"""
    number_of_phone=-1
    day_of_order_ticket=-1
    month_of_order_ticket=-1
    year_of_order_ticket=-1
    minutes_of_order_ticket=-1
    hours_of_order_ticket=-1
 
    def set_number_of_phone(self,nu):
        if type(nu)!=type(int()) and type(nu)!=type(float()):
            return -1
        if nu<=000000000 or nu>999999999:
            return print("Некорректные данные")
        self.number_of_phone=nu
        return self.number_of_phone
    
    def set_day_of_order_ticket(self,dot):
        if type(dot)!=type(int()) and type(dot)!=type(float()):
            return -1
        if dot<=0 or dot>31:
            return print("Некорректные данные")
        self.day_of_order_ticket=dot
        return self.day_of_order_ticket
    
    def set_month_of_order_ticket(self,mot):
        if type(mot)!=type(int()) and type(mot)!=type(float()):
            return -1
        if mot<=0 or mot>12:
            return print("Некорректные данные")
        self.month_of_order_ticket=mot
        return self.month_of_order_ticket
    
    def set_year_of_order_ticket(self,yot):
        if type(yot)!=type(int()) and type(yot)!=type(float()):
            return -1
        if yot<2019:
            return print("Некорректные данные")
        self.year_of_order_ticket=yot
        return self.year_of_order_ticket
    
    def set_hours_of_order_ticket(self,tot):
        if type(tot)!=type(int()) and type(tot)!=type(float()):
            return -1
        if tot<=0 or tot>24:
            return print("Некорректные данные")
        self.hours=tot
        return self.hours
    
    def set_time_of_order_ticket_minutes(self,totm):
        if type(totm)!=type(int()) and type(totm)!=type(float()):
            return -1
        if totm<=0 or totm>60:
            return print("Некорректные данные")
        self.minutes_of_order_ticket=totm
        return self.minutes_of_order_ticket
    
    def __init__(self,number_of_phone,month_of_order_ticket,day_of_order_ticket,year_of_order_ticket,hours_of_order_ticket,minutes_of_order_ticket):
        self.set_number_of_phone(number_of_phone)
        self.set_month_of_order_ticket(month_of_order_ticket)
        self.set_year_of_order_ticket(year_of_order_ticket)
        self.set_day_of_order_ticket(day_of_order_ticket)
        self.set_hours_of_order_ticket(hours_of_order_ticket)
        self.set_time_of_order_ticket_minutes(minutes_of_order_ticket)
        print("Конструктор выполнен")
    
    def __del__(self):
        print("Деструктор выполнен")
    
    def type_of_day_ticket(self,hours_of_order_ticket):
        if self.hours_of_order_ticket>=18:
            print("Билет заказан вечером")
        if self.hours_of_order_ticket<=8:
            print("Билет заказан утром")
        if self.hours_of_order_ticket>=9 and self.hours_of_order_ticket <=17:
            print("Билет заказан днем")
 
test=Bank_operation(5168148814881488,797,10,2020)
test.type_of_bank_card
print(Railway_ticket.__doc__)
Сделал так исправьте пожалуйста все равно не работает если можно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2019, 21:48
Помогаю со студенческими работами здесь

Классы в Python
Написать программу, где класс «геометрические фигуры» (Figure) содержит свойство color с изначальным значением white и метод для изменения...

Классы Python
Дорогие товарищи программисты! Нужна ваша помочь в решении следующей задачи.Создал класс Time с тремя атрибутами: часы, минуты и секунды, а...

Классы в Python
Всем привет недавно дошел до ООП в python. Хотелось бы поподробнее изучить про классы, атрибуты, конструкторы и методы. Можете скинуть...

Классы в python
Создать класс с именем worker, что состоит из следующих полей: name – имя работника, job – должность, year – год принятия на работу, month...

Классы с наследованием в Python
Необходима любая программа, сделанная с помощью классов с наследованием обязательно. Извините,в этом не шарю,надо для универа срочно....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru