I want to generate a string of size N.
It should be made up of numbers and uppercase English letters such as:
From Python 3.6 on you should use the secrets
module if you need it to be cryptographically secure instead of the random
module (otherwise this answer is identical to the one of @Ignacio Vazquez-Abrams):
from secrets import choice
import string
''.join([choice(string.ascii_uppercase + string.digits) for _ in range(N)])
One additional note: a list-comprehension is faster in the case of str.join
than using a generator expression!