Как эту программу сделать короче?
Нужно выводить случайные символы в несколько столбцов.
import random
n = str()
n1 = str()
n2 = str()
n3 = str()
n4 = str()
n5 = str()
n6 = str()
n7 = str()
n8 = str()
n9 = str()
n10 = str()
while True:
n = random.choice (["!", "№", "#", "$", "%", "@", "^", "&", "*"])
n1 = random.choice (["!", "№", "#", "$", "%", "@", "^", "&", "*"])
n3 = random.choice (["!", "№", "#", "$", "%", "@", "^", "&", "*"])
n4 = random.choice (["!", "№", "#", "$", "%", "@", "^", "&", "*"])
n5 = random.choice (["!", "№", "#", "$", "%", "@", "^", "&", "*"])
n6 = random.choice (["!", "№", "#", "$", "%", "@", "^", "&", "*"])
n7 = random.choice (["!", "№", "#", "$", "%", "@", "^", "&", "*"])
n8 = random.choice (["!", "№", "#", "$", "%", "@", "^", "&", "*"])
n9 = random.choice (["!", "№", "#", "$", "%", "@", "^", "&", "*"])
n10 = random.choice (["!", "№", "#", "$", "%", "@", "^", "&", "*"])
print(n, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10)
Ответы (4 шт):
Автор решения: R4mBLe_
→ Ссылка
Массив можете занести в array, внутри while True сделать цикл до десяти, где можно использовать локальную переменную, выбирать рандомом из массива и выводить
Автор решения: Dmitry
→ Ссылка
from random import choice
a = ["!", "№", "#", "$", "%", "@", "^", "&", "*"]
n = 10 # кол-во столбцов
while True:
for i in range(n):
print(choice(a), end="")
print()
Автор решения: MarianD
→ Ссылка
import random
SYMBOLS = "!№#$%@^&*"
HOW_MANY = 11
random_symbols = random.choices(SYMBOLS, k=HOW_MANY)
print(random_symbols)
Объяснение:
Для повторного выбора случайного символа из того же самого множества лучше применить функцию choices() (вместо choice()), которая возвращает (в виде списка) сразу только символов, сколько вы задаете в параметре k.
Примечание:
Когда вам не нравится вывод в виде списка (в квадратных скобках), вы можете выводить элементы списка в цикле:
for symbol in random_symbols:
print(symbol, end=" ")
Автор решения: Stanislav Volodarskiy
→ Ссылка
Аккуратный рефакторинг вашего приводит к такому результату:
import random
while True:
choices = random.choices('!№#$%@^&*', k=10)
print(*choices[:2], '', *choices[2:])
$ python choices.py | head ! ! % $ % $ $ @ $ № @ № % * & ! @ * & ! # % ! & @ % # № @ ! % * ! * @ # * @ @ # ! & % ! # № @ # * ! @ ^ & % @ @ & * № % ^ @ № № ^ № № ^ @ & ! @ ! @ № $ # @ $ № № % ! ^ $ * ^ & * @ ! ^ ^ % ^ № ! ! ! ^ Traceback (most recent call last): File "/home/sv/desk/stackoverflow/temp.py", line 5, in <module> print(*choices[:2], '', *choices[2:]) BrokenPipeError: [Errno 32] Broken pipe