Improve the error message for choices(population, 10) (GH-25267)

This commit is contained in:
Raymond Hettinger 2021-04-19 20:29:48 -07:00 committed by GitHub
parent 503cdc7c12
commit 2a36b09ce7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -518,7 +518,15 @@ class Random(_random.Random):
floor = _floor
n += 0.0 # convert to float for a small speed improvement
return [population[floor(random() * n)] for i in _repeat(None, k)]
cum_weights = list(_accumulate(weights))
try:
cum_weights = list(_accumulate(weights))
except TypeError:
if not isinstance(weights, int):
raise
k = weights
raise TypeError(
f'The number of choices must be a keyword argument: {k=}'
) from None
elif weights is not None:
raise TypeError('Cannot specify both weights and cumulative weights')
if len(cum_weights) != n: