Błąd w programie

0

Wywołuje funkcje i tak w kółko jak na zdjęciu, żadnej treści wyświetlanej na kosnoli. Program odinstalowany już kilkakrotnie, nie wiem gdzie problem.

Bez tytułu.png

1

ok, masz sobie funkcję:

def foo():
  zrób_cośtam()
  foo()

wywołujesz ją rekurencyjnie wewnątrz, ale nie wywołujesz jej w ogóle z zewnątrz. Bez tego nigdy się nie wykona.

0

Czyli mam dodać jakieś dodatkowe biblioteki, czy też błąd w ustawieniach, bo nie zrozumiałem? Po prostu widziałem taki fragment kodu w internecie i tam działało bez problemu. Nie wiem jak rozwiązać ten problem.

2
def foo():
  zrób_cośtam()

foo()	

Prawdopodobnie pomoże ;)

0
xyz91i napisał(a):

Wywołuje funkcje i tak w kółko jak na zdjęciu, żadnej treści wyświetlanej na kosnoli. Program odinstalowany już kilkakrotnie

Masz błędy w kodzie (poziom zaawansowania ciut wyżej od Hello World), żeby się ich pozbyć odinstalowujesz i na nowo instalujesz IDE od JetBrains?

Dobrze zrozumiałem?

Gdyby było, że jeszcze poszło formatowanie dysku to bym już nie pytał

1
xyz91i napisał(a):

Czyli mam dodać jakieś dodatkowe biblioteki, czy też błąd w ustawieniach, bo nie zrozumiałem?

Napisałeś funkcję, która wywołuje samą siebie. Po czym nie wywołałeś jej ani razu. Jak ją wywołasz, będzie się wywoływać w nieskończoność (albo raczej - aż zabraknie stosu).

# to się nigdy nie wywoła
def foo():
  print("foo")
  # wywołanie wewnątrz
  foo()

# to się wywoła raz
def bar():
  print("bar")

#wywołanie na zewnątrz
bar()

# to będzie się wywoływać w nieskończoność aż się wysypie
def baz():
  print("baz")
  # wywołanie wewnątrz
  baz()

#wywołanie na zewnątrz
baz()
2

Należy poprawnie sformatować kod jak pokazał @xDevil2.
Wcięcia w Pythonie są bardzo ważne, decydują o tym jak wykona się program. To, co jest "wcięte", wykona się dla instrukcji z dwukropkiem, np.

a=1
b=1
if a==b:
    print("To sie wykona jesli a jest rowne b")
print("A to sie wykona niezaleznie od tego czy a jest rowne b")

Jeszcze jeden przykład

a=1 #zmienna jest globalna, więc widać ją w funkcji
def dupa():
#Od tej pory wszystko wcięte przynajmniej raz będzie w funkcji dupa
#aż do momentu kiedy instrukcja nie będzie wcięta
    b=1#zmienna jest wcięta, więc widać ją TYLKO w funkcji

    if a==b:
        print("To sie wykona jesli a jest rowne b")

#Ta instrukcja print nie jest wcięta, co znaczy, że to już nie jest w funkcji
print("A to sie wykona niezaleznie od tego czy a jest rowne b")

Możemy wybrać czy wcięcia robić tabulatorami czy spacjami pod warunkiem, że w całym pliku robimy tak samo:

  • jeśli tabulator, to tabulator,
  • jeśli dwie spacje, to dwie spacje,
  • jeśli cztery spacje, to cztery spacje,
  • i tak dalej.

W przypadku kiedy w jakiejś linii liczba spacji albo tabów nie będzie się zgadzać z resztą, program dojdzie do linijki z nieprawidłowym wcięciem i się zatrzyma.

Autor za jakiś czas pewnie będzie się śmiał z błędu jaki popełnił.

1
xyz91i napisał(a):

A jakim skrótem klawiszowym wyjść bezpośrednio z pętli na początek wiersza?

Czy ty pytasz jak przesunąć kursor w edytorze na początek wiersza?

0

Kiedyś, dawno temu miałem podobny problem (chyba przy jakimś ifie) - jednak przy czymś co miało kilkaset linii kodu. Do dziś wspominam jak to napisany kod zachowywał się czasami niepoprawnie a ja się dziwiłem co jest grane. Wtedy dopiero zaczynałem pisać w pythonie więc wcięcia w kodzie mimo że oczywiście wiedziałem co i jak - to jednak wyglądały dla mnie jeszcze dziwnie i takie sytuacje nie rzucały się w oczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1