Python 'Algorytm'

PH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 121
0

Cześć ,
Mam pytanie odnośnie poniższego kodu

Kopiuj
s=0
for x in range(6):
    if x>1 and x<5:
        print(x)
        continue
    s+=x
print('X='+str(x)+'\n'+'S='+str(s))

X wynosi 5
S wynosi 6

I teraz moje pytanie brzmi dlaczego X wynosi 5 ? bo S to wiadomo to co nie jest 'True' w pętli idzie do zmiennej S i się sumuje czyli w zmiennej S zsumowało się (0,1,5) ale dlaczego X wynosi 5 skoro w X wartości TRUE to (2,3,4)

katakrowa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Chorzów
  • Postów: 1670
2

Bo w pętli pod warunkiem jest komenda continue, która przeskakuje do kolejnego kroku pętli nie wykonując dalszych jej instrukcji.
Uruchom coś takiego:

Kopiuj
s=0
for x in range(6):
    if x>1 and x<5:
        print(x)
        continue    
    s+=x
    print("zmiana S",x, s)
print('X='+str(x)+'\n'+'S='+str(s))

wynik programu:

Kopiuj
zmiana S 0 0
zmiana S 1 1
2
3
4
zmiana S 5 6
X=5
S=6
PH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 121
0

Tak tak ja to rozumiem tylko nie wiem dlaczego w x skoro mamy 2,3,4 wynik równa się 5. O to mi chodzi.w Zmiennej s sprawa jest prosta tę która nie spełniają warunki lecą do s , warunku nie spełniają 0,1,5 równa się 6

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

A ile ma wynosić? range(6) zwraca 0,1,2,3,4,5, więc ostatnie przypisanie do x będzie 5. Dodaj sobie print(x) zaraz pod tym for i zobaczysz.

PH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 121
0

Dobra ok , nie wiem dlaczego ale skupiłem się na jakimś wyimaginowanym sumowaniu tego x :) . Dzięki chłopaki i spokojnej nocki.

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.