0

У меня есть программа, которая хранит информацию о танспортных средствах:

class Transport(object):
    def  __init__ (self, s, c, m, n):
        self.speed = s 
        self.color = c 
        self.made = m
        self.number = n
    def  __str__ (self):
        s="Скорость:" + str(self.speed) + ",цвет:" + self.color + ", производитель:" + self.made + ", регистрационный номер:" + self.number + "\n"
        s=str(s)
        return s 
    def go(self):
        print("Начинает движение ", self.made) 
    def stop(self):
        print("Остановка ",self.made)
    def signal(self):
        print(self.made, "подаёт звуковой сигнал")
    def info(self):
        print("Скорость:" + self.speed + ",цвет:" + self.color + ", производитель:" + self.made + ", регистрационный номер:" + self.number)
transport1 = Transport(20, "blue", "Forward", "1001") 
transport2 = Transport(180, "white", "Ford", "1002") 
transport3 = Transport(100, "red", "MA3", "1003")
spisok=["transport1", "transport2", "transport3"]
def main_menu():
    print ('''
    Вы в главно меню!
    Выберите дейстиве:
    1. Добавить новое транспортное средство
    2. Удалить транспортное средство
    3. Вывести информацию о транспортном средстве
    4. Редиктировать информацию о транспортном средстве
    5. Выполнить дейстиве с объектом
    6. Выход
    ''')
    action = int(input("Выберите дейстиве: "))
    if action == 1:
        print ("Добавить т. с.")
        main_menu()
    elif action == 2:
        print ("Удалить т.с")
        main_menu()
    elif action == 3:
        ts=int(input("Введите номер  транспортного средства:"))
        if ts>len(spisok):
            print("В вспике всего {len(spisok)} машин!")
        else:
            spisok[ts-1].info()
        main_menu()
    elif action == 4:
        ts=int(input("Введите номер  транспортного средства:"))
        if ts>len(spisok):
            print("В вспике всего {len(spisok)} машин!")
        else:
            j=str(input("Что вы хотите отредкатировать? "))
            if j=="скорость":
                s=int(input("Введите новую скорость: "))
                spisok[ts-1]=s
            elif j=="цвет":
                c=int(input("Введите новый цвет: "))
                spisok[ts-1]=c                
            elif j=="производитель":
                m=int(input("Введите нового производителя: "))
                spisok[ts-1]=m
            elif j=="регистрационный номер":
                n=int(input("Введите новоый рег. номер: "))
                spisok[ts-1]=n
            else:
                print ("Некорректный ввод")
        main_menu()
    elif action==5:
        ts=int(input("Введите номер  транспортного средства:"))
        ac=str(input("Какое действие вы хоитие сделать? "))
        if ts>len(spisok):
            print("В вспике всего {len(spisok)} машин!")
        else:
            if ac=="ехать":
                spisok[ts-1].go()
            elif ac=="остановиться":
                spisok[ts-1].stop()
            elif ac=="подать сигнал":
                spisok[ts-1].signal()
            else:
                print ("Некорректный ввод")
        main_manu()
    elif action==6:
        sys.exit
main_menu()

И она выдаёт ошибку:

Traceback (most recent call last):
  File "E:Python\main3.py", line 86, in <module>
    main_menu()
  File "E:Python\main3.py", line 46, in main_menu
    spisok[ts-1].info()
AttributeError: 'str' object has no attribute 'info'

Объясните пожалуйста, в чем может быть проблема?

  • spisok=["transport1", "transport2", "transport3"] -> spisok = [transport1, transport2, transport3] (уберите кавычки в создании списка). – n1tr0xs Sep 23 '23 at 05:30
  • Теперь выдает новую ошибку: Traceback (most recent call last): File "E:\Python\main3.py", line 96, in main_menu() File "E:\Python\main3.py", line 56, in main_menu spisok[ts-1].info() File "E:\Python\main3.py" line 18, in info print("Скорость:" + self.speed + ",цвет:" + self.color + ", производитель:" + self.made + ", регистрационный номер:" + self.number) TypeError: can only concatenate str (not "int") to str – Kopokotil Sep 23 '23 at 05:33
  • https://ru.stackoverflow.com/questions/420125/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B8-%D0%B8-%D1%83%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B5-%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B-%D0%BF%D0%BE-python – n1tr0xs Sep 23 '23 at 06:26
  • Пользуйтесь f-строками для форматирования печати – CrazyElf Sep 23 '23 at 06:36

0 Answers0