Liczba w której nie powtarzają się cyfry

0

Cześć,
tak jak w temacie: chcę stworzyć liczbę składającą się z określonej ilości cyfr w której żadna się nie powtarza.
Mam taki kod:

 import random

def losowanie(n):
    lista = [0, range(n)]
    liczba = ""
    for i in range(n):
        k = random.choice(lista)
        lista.remove(k)
        liczba += str(k)
    print liczba

losowanie(10)

Wywala mi taki błąd:

AttributeError: 'builtin_function_or_method' object has no attribute 'choice'
Nie mam pojęcia a co chodzi. Może ktoś pomóc?

zamiana znacznika <quote> na <code> - @furious programming

0

Jaka jest idea tej instrukcji?

lista = [0, range(n)]

Na pewno nie tworzy ona 10-elementowej listy liczb jednocyfrowych. Zamień na

lista = range(n)
2
  1. tworzysz listę "0123456789"
  2. mieszasz ją
  3. pobierasz pierwsze N - elementów
0

Hmmm o czymś takim nie pomyślałem. A jest jakiś specjalny sposób na mieszanie list? Bo jeśli będę losował po kolei indeksy listy pierwszej i zapisywał liczby które kryją się pod tymi indeksami do listy drugiej to będzie to prawie to samo co próbuję zrobić w kodzie powyżej.

0

Metoda shuffle w module random.

0

Aha ok, w poleceniu mam "bez użycia funkcji shuffle z moduły random" :D

0

I uznałeś że nie warto o tym wspomnieć na początku tego tematu? o_O

0

No w sumie tak;D myślałem że ktoś odniesie się raczej do moje kodu :)

0

A funkcję sample z tego modułu możesz użyć?

0
bogdans napisał(a):

A funkcję sample z tego modułu możesz użyć?

Tak, nie jest napisane że nie można z niej korzystać:)

Dobra poradziłem sobie w ten sposób:

 from random import *

def randperm(n):
    lista = range(n)
    liczba = []
    for i in range(n):
        while (True):
            a = randrange(0, n)
            if a in lista:
                liczba.append(str(a))
                lista.remove(a)
                break
    print liczba
0

zamiast:

while (True):
            a = randrange(0, n)
                        if a in lista:

wylosuj pos w zakresie 0..aktualny_rozmiar_listy-1]
ustaw a jako element listy o numerze pos

0
from random import sample
def randperm(n):
    return sample(range(10), n)

robienie import * to zla praktyka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1