Если еще не работает внутри метода в классе

#python #python-3.x #class

#python #python-3.x #класс

Вопрос:

Код завершается в строке 11 после задания вопроса. Он выполняет оператор if. Программа также не выдает никакой ошибки.

 class Car():

    def __init__ (self, name):
        print (f"Hello and welcome {name}. You have won a Ferrari. Please enter the details below. n")
        phone = input("Your phone number: ")
        address = input("Your home address: ")

    def sorry(self):
        print ("Hey! We are sorry, we do not ship beyond 2000 Miles.")

        response = input("Do you still want it? Yes or No? : ".upper())

        if response == "YES":
            print (f"Cool! {name}. Ride to us.")
        elif response == "NO":
            print (f"Oops! {name}. We are sorry to see you go. :(")
        else:
            "Have a Good day!"


Car1 = Car("Jack")
Car1.sorry()
  

Комментарии:

1. input("Do you still...").upper()

2. Проблема не в вашем операторе if else, вы неправильно обращаетесь к имени класса

3. Поверх комментария @Austin.. Причина, по которой он ничего не печатает, заключается в том, что в else нет инструкции print. Он просто создает строку "Have a Good day!" и ничего с ней не делает.

4. Сначала вы обновляете свои концепции ооп о переменной класса, а переменная экземпляра получает доступ к вашей переменной экземпляра, объявляя ее в методе init

5. введите тип вашей входной переменной, а затем Upper, а затем сравните

Ответ №1:

  1. Убедитесь, что вы сохранили ввод пользователя в переменную экземпляра класса, а не просто в локальную переменную метода.

self.phone = input("Your phone number: ")

  1. Выведите ответ «Хорошего дня», вызвав print .

  2. Никогда не ставьте пробел между именем функции и открытой круглой скобкой.

  3. все имена переменных должны быть в нижнем регистре и, возможно, содержать символы подчеркивания.

  4. Получите доступ к переменной экземпляра self.name внутри sorry() метода, а не просто к локальной переменной null name .

print(f"Cool! {self.name}. Ride to us.")

  1. Убедитесь, что вы пишете ответ с заглавной буквы на «Вы все еще этого хотите? Да или нет? : » и не сам вопрос.

response = input("Do you still want it? Yes or No? : ").upper()

  1. Убедитесь, что вы сохранили имя пользователя в конструкторе, чтобы вы могли получить к нему доступ позже.

self.name = name

Попробуйте это:

 class Car():

    def __init__ (self, name):
        print(f"Hello and welcome {name}. You have won a Ferrari. Please enter the details below. n")
        self.name = name
        self.phone = input("Your phone number: ")
        self.address = input("Your home address: ")

    def sorry(self):
        print("Hey! We are sorry, we do not ship beyond 2000 Miles.")

        response = input("Do you still want it? Yes or No? : ").upper()

        if response == "YES":
            print(f"Cool! {self.name}. Ride to us.")
        elif response == "NO":
            print(f"Oops! {self.name}. We are sorry to see you go. :(")
        else:
            print("Have a Good day!")

ca1 = Car("Jack")
ca1.sorry()
  

Ответ №2:

Вы неправильно используете функцию upper,

правильный способ заключается в следующем:

 response = input("Do you still want it? Yes or No? :").upper()
  

Вы забыли указать «Хорошего дня!» в функции печати

   print("Have a Good day!")
  

также вам не хватает концепции OOPS, инициализируйте

     self.name=name 
  

тогда вы сможете получить доступ к name.

Я переписываю ваш код, и теперь он выполняется нормально.Надеюсь, это поможет классу Car ():

         def __init__ (self, name):
            self.name=name
            print (f"Hello and welcome {name}. You have won a Ferrari. Please enter the details below. n")
            phone = input("Your phone number: ")
            address = input("Your home address: ")

        def sorry(self):
            print ("Hey! We are sorry, we do not ship beyond 2000 Miles.")

            response = input("Do you still want it? Yes or No? :").upper()


            if response == "YES":
                print (f"Cool! {self.name}. Ride to us.")
            elif response == "NO":
                print (f"Oops! {self.name}. We are sorry to see you go (: ")
            else:
                print("Have a Good day!")


    Car1 = Car("Jack")
    Car1.sorry()
  

Ответ №3:

В вашем коде есть несколько ошибок:

  • response = input("Do you still want it? Yes or No? : ".upper()) не изменяет пользовательский ввод в верхний регистр, но делает вашу строку запроса заглавной. Итак, измените его на response = input("Do you still want it? Yes or No? : ") .upper()
  • {name} Выдает ошибки, поскольку код не знает, что такое name. Итак, в вашем классе добавьте name в качестве строкового атрибута и __init__ определите name . Позже используйте строку-заполнитель, чтобы присоединить имя к строке печати.
  • В последнем else утверждении отсутствует print()

Модифицированный класс Car должен выглядеть примерно так:

 class Car():
name = ""

def __init__ (self, name):
    self.name = name

    print (f"Hello and welcome {name}. You have won a Ferrari. Please enter the details below. n")
    phone = input("Your phone number: ")
    address = input("Your home address: ")

def sorry(self):
    print("Hey! We are sorry, we do not ship beyond 2000 Miles.")

    response = input("Do you still want it? Yes or No? : ").upper()

    if response == "YES":
        print(f"Cool! %s. Ride to us." % self.name)
    elif response == "NO":
        print(f"Oops! %s. We are sorry to see you go. :(" % self.name)
    else:
        print("Have a Good day!")
  

Ответ №4:

Есть пара проблем:

1. Верхний регистр

В

 response = input("Do you still want it? Yes or No? : ".upper())
  

вы применяете upper() к тексту приглашения, а не к ответу, заданному
что в следующем вашем коде проверяется только на "YES" и "NO" , вы должны использовать:

 response = input("Do you still want it? Yes or No? : ").upper()
  

где response вместо этого преобразуется в верхний регистр.

2. «else не работает»

     else:
        "Have a Good day!"
  

может быть, мы здесь забыли print ? 🙂