Wpis z mikrobloga

siema, ja znowu z problemem. Jestem mega początkującym w python, uczę się sam dla siebie, zeby po prostu złapać jakąs wiedzę w jakiejś dziedzinie.

Mam taki kod:

class User:
def __init__(self, first_name, last_name, birth, gg, email):
"""basic information about user"""
self.first_name = first_name
self.last_name = last_name
self.birth = birth
self.gg = gg
self.email = email
def describe_user(self):
"""describe your user"""
info = self.first_name + " " + self.last_name + " " + str(self.birth) + " " + str(self.gg) + " " + self.email
return info.title()
def greet_user(self):
print("Hi! " + self.first_name.title())
wiktor = User("wiktor", "cwt", 1996, 123456, " wiktor@kds.pl")
print(wiktor.describe_user())
print(wiktor.greet_user())
ola = User("ola", "prd", 1996, 616724, "ola@kds.pl")
print(ola.describe_user())
print(ola.greet_user())
lena = User("lena", "kkt", 2015, 987654, "lena@kds.pl")
print(lena.describe_user())
print(lena.greet_user())

Problem jest taki, że w output mam coś takiego:

Wiktor Cwt 1996 123456 Wiktor@Kds.Pl
Hi! Wiktor
**None**
Ola Prd 1996 616724 Ola@Kds.Pl
Hi! Ola
**None**
Lena Kkt 2015 987654 Lena@Kds.Pl
Hi! Lena
**None**

Problem mam z tym, że ciągle wyświetla mi się wartość none, powie mi ktoś dlaczego ona się tam pojawia?

#naukaprogramowania #python
  • 12
  • Odpowiedz
@kaktusowyAloes: wywal printa z ostatniej linijki, bo już sama metoda greetuser drukuje Hi...
A potem ty jeszcze drukujesz pusty obiekt, czy coś w każdym razie niepotrzebnie

wiktor = User("wiktor", "cwt", 1996, 123456, " wiktor@kds.pl")
print(wiktor.describe
user())
wiktor.greet_user()
  • Odpowiedz
Jeśli chcesz printa zostawić, to zwróć wynik funkcji zamiast podwójnie drukować.

def greetuser(self):
return ("Hi! " + self.first
name.title())
  • Odpowiedz
@kaktusowyAloes: Free tip: funkcja powinna zwracać wynik, a nie go drukować, czyli jak masz funkcje def, albo metodę w klasie, to niech korzysta z return, a printa unikaj, chyba że jest super niezbędny (nigdy nie jest) albo do celów testowych :)
  • Odpowiedz