#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:
- Убедитесь, что вы сохранили ввод пользователя в переменную экземпляра класса, а не просто в локальную переменную метода.
self.phone = input("Your phone number: ")
-
Выведите ответ «Хорошего дня», вызвав
print
. -
Никогда не ставьте пробел между именем функции и открытой круглой скобкой.
-
все имена переменных должны быть в нижнем регистре и, возможно, содержать символы подчеркивания.
-
Получите доступ к переменной экземпляра
self.name
внутриsorry()
метода, а не просто к локальной переменной nullname
.
print(f"Cool! {self.name}. Ride to us.")
- Убедитесь, что вы пишете ответ с заглавной буквы на «Вы все еще этого хотите? Да или нет? : » и не сам вопрос.
response = input("Do you still want it? Yes or No? : ").upper()
- Убедитесь, что вы сохранили имя пользователя в конструкторе, чтобы вы могли получить к нему доступ позже.
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
? 🙂