nth Factorial of n 1s in a row
One thing I'd change is to not use args everywhere. You use the name &quot;n&quot; in the problem description, so I'd use that in the program as well. Reading args only once, to store the value in n.
Your getones function is rather lengthy and inefficient, taking O(n2) time to build the string. Although the rest of the program can't handle large n anyway, so efficiency doesn't really matter here. (And maybe the conversion to int takes quadratic time, not sure.)
Here's a shorter solution:
e = sum(map(log10, range(int('1' * n), 0, -n)))
print('%.2fe%d' % (10**(e % 1), e // 1))

Demo:
&gt;&gt;&gt; n = 9
&gt;&gt;&gt; from math import log10
&gt;&gt;&gt; e = sum(map(log10, range(int('1' * n), 0, -n)))
&gt;&gt;&gt; print('%.2fe%d' % (10**(e % 1), e // 1))
9.22e93968682

Comparison with yours (at repl.it) for n=9, same result and mine's about three times as fast:
n = 9
yours:
9.22e93968682
0:00:11.911943
mine:
9.22e93968682
0:00:03.964518

We have a different result for example for n=2:
n = 2
yours:
1.03e4
0:00:00.011884
mine:
1.04e4
0:00:00.000085

The exact result is:
&gt;&gt;&gt; math.prod(range(11, 0, -2))
10395

So I'd say yours isn't rounding correctly.