Не выдает четырехзначное число без одинаковых цифр
a = int(random.uniform(1, 9))
b = int(random.uniform(0, 9))
c = int(random.uniform(0, 9))
d = int(random.uniform(0, 9))
while nig < 10:
`while b == a:
b = int(random.uniform(0, 9))
while c == a and c == b:
c = int(random.uniform(0, 9))
while d == a and d == c and d == b:
d = int(random.uniform(0, 9))`
number_sof_comp = str(a) + str(b) + str(c) + str(d)
print(number_sof_comp)
nig = nig+1
Эта программа должна выдавать число без повторяющихся цифр, например 3456, 9748 пример как не должно быть 3445, 7897. Она выдает просто случайное число.
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
создание переменных надо занести в цикл. Также в while and надо поменять на or. И место uniform лучше использовать randrange
import random
nig = 0
while nig < 10:
a = random.randrange(1, 10)
b = random.randrange(10)
c = random.randrange(10)
d = random.randrange(10)
while b == a:
b = random.randrange(10)
while c == a or c == b:
c = random.randrange(10)
while d == a or d == c or d == b:
d = random.randrange(10)
number_sof_comp = str(a) + str(b) + str(c) + str(d)
print(number_sof_comp)
nig = nig+1
Автор решения: n1tr0xs
→ Ссылка
Еще можно использовать itertools.permutations:
from itertools import permutations
numbers = []
digits = 4
for tup in permutations(map(str, range(10)), 4):
if tup[0] == '0':
continue
print(tup)
numbers.append(int(''.join(tup)))