Zmienna s w linii 20 ma wartość 1 dla 4.
Linie 16 do 22 powinny być poza pętlą.
Co do samego kodu to nie powinno być tu w ogóle zmiennej z. Jest ona niepotrzebna.
Mógłbyś również zamienić:
print(s[-2], s[-1])
na:
print(' '.join(s[-2:]))
Co oznacza, że zostaną wypisane wszystkie elementy zaczynając od przedostatniego i zostaną połączone spacją.
Ten sposób ma jedną wadę, mianowicie jeżeli nie ma dziesiątek zostanie wypisana tylko liczba jedności, więc dalej potrzebujesz linii od 3 do 12. Mógłbyś jednak to naprawić zamieniając poprzedni kod na:
print(' '.join(([0] if len(s)==1 else [])+s[-2:]))
Co oznacza, że jeżeli ilość cyfr jest równa 1 to na początek zostanie dodane 0.
Powinieneś również zamienić > na >= w linii 16, ponieważ dla 11 wynik też będzie 0 0.
Czyli finalny kod wygląda następująco:
def silnia(n):
if n>=11:
return "0 0"
else:
s=1
for i in range (1,n+1):
s=s*i
else:
return ' '.join(('0' if len(str(s))==1 else '')+str(s)[-2:])
test_num = int(input()) # liczba testów
for j in range (test_num):
print (silnia(int(input())))
Jeżeli masz jakieś pytania to pisz.