on writing a while loop for rolling two dice
dn
PythonList at DancesWithMice.info
Sun Aug 29 06:13:03 EDT 2021
On 29/08/2021 20.06, Peter Otten wrote:
...
> OK, maybe a bit complicated... but does it pay off if you want to
> generalize?
>
>>>> def roll_die(faces):
> while True: yield random.randrange(1, 1 + faces)
>
>>>> def hmt(faces, dies):
> for c, d in enumerate(zip(*[roll_die(faces)]*dies), 1):
> if len(set(d)) == 1: return c, d
Curiosity:
why not add dies as a parameter of roll_die()?
Efficiency:
- wonder how max( d ) == min( d ) compares for speed with the set() type
constructor?
- alternately len( d ) < 2?
- or len( d ) - 1 coerced to a boolean by the if?
- how much more efficient is any of this (clever thinking!) than the
OP's basic, simpler, and thus more readable, form?
English language 'treachery':
- one die
- multiple dice
(probably not followed in US-English (can't recall), particularly on
computers running the Hollywood Operating System).
Continuous Education:
Thanks for the reminder that enumerate() can be seeded with a "start" value!
--
Regards,
=dn
More information about the Python-list
mailing list