Odpowiedź :
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)