In Python int() and float() convert a string into a number even if it contains
some whitespace before and after the number:
>>> s = " 12\n"
>>> int(s)
12
>>> float(s)
12.0
In D to!int(" 12\n") gives a run-time error. So time ago I have weakly asked
Andrei to change to!int, to let it ignore leading and trailing whitespace, but
he has ignored my request.
A leading newline comes often from input stdin.readln() and other sources. So
in D you need to add a strip():
int n = to!int(stdin.readln().strip());
I sometimes forget to add the strip(). Do you know why Andrei has not
appreciated the idea of to!int and similar functions to ignore leading and
trailing whitespace?
Bye,
bearophile