Майкл Доусон - Программируем на Python 8 глава задача 2
Создайте программу, имитирующую телевизор как объект. У пользователя должна быть возможность вводить номер канала, а также увеличивать и уменьшать громкость. Программа должна следить за тем, чтобы номер
канала и уровень громкости оставались в допустимых пределах.
class TV(object):
def __init__(self, program=0, volume=0):
self.volume=0
self.program=0
def __str__(self):
rep="Now volume: "+str(self.volume)+" program: "+str(self.program)
return rep
def check(self,st='', numb=None):
while numb==None:
try:
numb=int(input(st))
except:
print('Try again')
return numb
def increase_volume(self, vol=-1):
while vol<0:
vol=self.check(st='How many? Write from 0 to 100 ' )
self.volume+=vol
if self.volume>100:
self.volume=100
def turndown_volume(self, vol=1):
while vol>0:
vol=self.check(st='How many? Write from -100 to 0 ')
self.volume+=vol
if self.volume<0:
self.volume=0
def change_program(self, prog=-1):
while prog<0 or prog>50:
prog=self.check(st='What do you want to watch? Write from 0 to 50 ')
self.program = prog
def main():
television = TV()
choice = None
while choice != "0":
print \
("""
TV
0 - Quit
1 - Increase volume
2 - Turn down the volume
3 - Change program
4 - See settings
""")
choice = input("Choice: ")
print()
if choice == "0":
print("Good-bye.")
elif choice == "1":
television.increase_volume()
elif choice == "2":
television.turndown_volume()
elif choice == "3":
television.change_program()
elif choice == "4":
print(television)
else:
print("\nSorry, but", choice, "isn't a valid choice.")
main()
("\n\nPress the enter key to exit.")
File "D:/PycharmProjects/douson_learning/tv_chapter_8.py", line 47
ОтветитьУдалитьtv.chan_set(chan) = choice
^
SyntaxError: can't assign to function call
У меня как-то так вышло:
ОтветитьУдалитьclass Tv(object):
"""Имитация телевизора"""
def __init__(self, channel=1, volume=0):
"""Атрибуты класса"""
self.channel = 1
self.volume = 0
def change_channel(self, cur_ch=1):
"""Смена канала"""
cur_ch = int(input('Выберите желаемый канал: '))
if cur_ch < 0 or cur_ch > 50:
print('Такого канала нет!')
else:
self.channel = cur_ch
print('Сейчас включен', self.channel, 'канал')
def volume_up(self, vol_up=0):
"""Добавление громкости"""
vol_up = int(input('Сколько громкости добавить? '))
self.volume += vol_up
if self.volume > 100:
self.volume = 100
print('Текущая громкость:', self.volume)
def volume_down(self, vol_down=0):
"""Убавление громкости"""
vol_down = int(input('Сколько громкости убавить? '))
self.volume -= vol_down
if self.volume < 0:
self.volume = 0
print('Текущая громкость:', self.volume)
def current_set(self):
"""Текущие настройки"""
print('Сейчас включен', self.channel, 'канал. Уровень громкости:', self.volume)
# Основная часть
def main():
television = Tv()
choice = None
while choice != '0':
print(
"""
Телевизор
0 - выход
1 - выбрать канал
2 - добавить громкость
3 - убавить громкость
4 - текущий канал
"""
)
choice = input('Ваш выбор: ')
print()
if choice == '0':
print('До свидания!')
elif choice == '1':
television.change_channel()
elif choice == '2':
television.volume_up()
elif choice == '3':
television.volume_down()
elif choice == '4':
television.current_set()
else:
print('Такого пункта нет!')
main()