Python код, который нуждается в некотором обзоре - PullRequest
1 голос
/ 26 мая 2009

В настоящее время я изучаю Python (в самом начале), поэтому у меня все еще есть некоторые сомнения по поводу хороших манер кода и как мне с ним работать.

Сегодня я создал этот код, который должен случайным образом иметь значения от 01 до 60 (но работает с 01 до 69)

import random

dez = ['0', '1', '2', '3', '4', '5', '6']
uni = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
sort = []

while len(sort) <= 5:
    random.shuffle(dez)
    random.shuffle(uni)
    w = random.choice(dez)
    z = random.choice(uni)
    chosen = str(w) + str(z)
    if chosen != "00" and chosen not in sort:
        sort.append(chosen)
    print chosen

Я также сомневаюсь, как заставить код останавливаться на "60".

Ответы [ 4 ]

4 голосов
/ 26 мая 2009

Вы понимаете, что можете написать точно такой же код в 1 строку, верно? Это просто, используя randint :

>>> [random.randint(1,60) for _ in range(6)]
[22, 29, 48, 18, 20, 22]

Это даст вам список из 6 случайных целых чисел от 1 до 60. В вашем коде вы создаете строк , которые имеют эти числа. Однако, если вы намеренно создаете их как строки, вы можете сделать это:

>>> [str(random.randint(1,60)) for _ in range(6)]
['55', '54', '15', '46', '42', '37']
2 голосов
/ 26 мая 2009

Вы можете просто использовать

random.randrange(1,60)
1 голос
/ 19 марта 2010

Чтобы получить 6 уникальных случайных чисел в диапазоне от 1 до 59:

sample = random.sample(xrange(1, 60), 6)
# -> [8, 34, 16, 28, 46, 39]

Чтобы получить строки:

['%02d' % i for i in sample]
# -> ['08', '34', '16', '28', '46', '39']
0 голосов
/ 26 мая 2009

вы не получите никакой реальной выгоды, перетасовывая каждую петлю. Сделайте это один раз перед циклом.

выбрано не слово

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...