j=1
wynik = 1
zakres=int (input("Podaj n!: "))
for i in range(zakres):
wynik = wynik * j
j=j+1
print(wynik)



to jest pentla for w python czy ktoś mugł by to przerobić na while plis



Odpowiedź :

Aerrus

Odpowiedź:

j = 1

wynik = 1

zakres = int(input('Podaj n: '))

while j <= zakres:

   wynik *= j

   j += 1

print(wynik)

Wyjaśnienie:

Oto twój program po drobnych poprawkach:

j = 1

wynik = 1

zakres = int(input('Podaj n: '))

for i in range(zakres):

   wynik *= j

   j += 1

print(wynik)

Użyłem operatorów *= oraz +=, które poprawiają czytelność kodu. Zdefiniowane są następująco: a *= b to to samo co a = a * b, natomiast a*= b jest tożsame z zapisem a = a + b.

Dla lepszego zrozumienia, warto zastanowić się co robi twój program - oblicza on n! (silnia). Zatem zmienną wynik chcemy kolejno pomnożyć przez n (przechowywane w zmiennej zakres) pierwszych liczb całkowitych dodatnich (np. dla n=5 jest to 1, 2, 3, 4, 5), kolejno przechowywanych w zmiennej j.

Pętla while wymaga od nas podania warunku kontynuacji, który musi być spełniony, żeby pętla była wykonywana. Łatwo zauważyć, że dobrym warunkiem byłoby j <= zakres. Tak napisany program wygląda następująco:

j = 1

wynik = 1

zakres = int(input('Podaj n: '))

while j <= zakres:

   wynik *= j

   j += 1

print(wynik)