Zwracanie "None"

Zwracanie "None"
P7
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:75
0

Spróbowałem programik (który stworzyłem we funkcji i dałem wcześniej na forum ), przerobić na klasę . I gdzieś zrobiłem błąd, bo po wywołaniu kodu zwraca mi None, a powinienem mieć info o danej pozycji w zbiorze( 10) itp... Moglibyście podpowiedzieć, gdzie tu zrobiłem błąd?

Kopiuj
class Figures:
    magazzine = [5,10,8,7,9,3,22]

    def __init__(self,start,possition):
        self.start = start
        self.possition = possition

    def looking_position(self):
        if self.magazzine[self.possition] == self.start:
            print(f'I found position on: {self.possition}')
        
            
        elif self.possition == len(self.magazzine)-1:
            print("Didn't found position")
        self.possition+1
        

figures = Figures(10,0)
print(figures.looking_position())
edytowany 2x, ostatnio: Riddle
Zobacz pozostały 1 komentarz
P7
Słowa possition i magazzine specjalnie zostały napisane tak przeze mnie :) Ale fakt, prawidłowo powinny te słowa być napisane jak wyżej co napisałeś :)
LukeJL
a po co tak napisałeś?
P7
Bo nie chciałem powielać nazw, które są w Pythonie. Przykładowo position ( turtle) ... Choć tu jak sądzę, nie ma za bardzo różnicy jeśli chodzi o używane nazewnictwo w kodzie. Chodzi mi o ten konkretny przykład: position. A może złe wnioski/analizy wyciągam ?
LukeJL
Zależy, czy to idzie na produkcję. Ja jak się uczę jakiejś technologii, to też często celowo piszę nazwy z d**y, żeby zobaczyć, czy mają znaczenie (w tutorialach nie zawsze jest to jasne, co musi być nazwane w określony sposób, a co można sobie zmienić). Ale pisać tak na serio zwykle nie ma żadnej potrzeby. position z Turtle nie musi cię blokować przed używaniem position w swojej klasie.
LukeJL
chociaż jakbyś chciał napisać funkcję do drukowania na drukarce, to pewnie złym pomysłem byłoby nazywanie jej po prostu print, bo by się myliła i zasłaniała istniejącą popularną funkcję print. Więc czasem to może mieć znaczenie (plus niektórych nazw nie utworzysz, np. nie nazwiesz zmiennej class. Więc wtedy może być zabawnie, widziałem kody w JavaScript, w których była potrzeba zapisania gdzieś klasy CSS i zmienne typu klass, bo class to słowo kluczowe)
1programmer
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 dni
  • Lokalizacja:Wrocław
  • Postów:523
3

Nie masz returna


Programować muszę, bo się uduszę
edytowany 1x, ostatnio: Riddle
HavilandTuff
  • Rejestracja:ponad 7 lat
  • Ostatnio:4 dni
  • Postów:8
1

Metoda looking_position() niczego nie zwraca więc print() drukuje None. Nie drukuje się żaden z komunikatów bo nie jest spełniony żaden z warunków if...elif.
Od sprawdzania czy wartość jest elementem listy jest operator in np. if x in list:

edytowany 1x, ostatnio: Riddle
ledi12
  • Rejestracja:prawie 6 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Wrocław
47

Nie wiem co chcesz zrobić, ale jesli próbujesz filtorwać po indexie to od tego są pętle.

Kopiuj
def looking_position(self):
     return [x for x in range(len(self.magazzine)) if self.magazzine[x] == self.start]

Robię http response status cody w martwych ciągach
edytowany 3x, ostatnio: Riddle
Riddle
Następnym razem możesz użyć Shift+Tab żeby wciąć kod, by usunąć niepotrzebne wcięcia.
P7
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:75
0

Dzięki Wam za pomoc. Mój bład , bo nie uzyłem pętli w celu szukania po indeksie :)

Udało mi się to na swój sposób napisać:

Kopiuj
class Figures:
    magazzine = [5,10,8,7,9,3,22]

    def __init__(self,start,position):
        self.start = start
        self.position = position

    def looking_position(self):
        for x in self.magazzine:
            if x == self.start:
                return (f'I found on position: {self.position}')

            elif self.position == len(self.magazzine)-1:
                return "Didn't found anything "

            self.position +=1
          
figures = Figures(33,0)
print(figures.looking_position())

Mam nadzieję że taki kod może być, choć kolega @ledi12 dał skrótowe rozwiązanie :) Powoli obczajam tą obiektówkę :)

edytowany 2x, ostatnio: Riddle

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.