Найти - Пользователи
Полная версия: random - TypeError: list() takes no keyword arguments
Начало » Python для новичков » random - TypeError: list() takes no keyword arguments
1
gelius
 import random
import subprocess
from threading import Thread
results = []
start_processes = 6
def run_command(count, result_storage):
    cmd = subprocess.check_output(['ping', '-c', 5, str(choice)  + '.com'], text=True)
    result_storage.append(cmd)
threads = []
for _ in range(start_processes):
    x = random.randint(3, 4)
    print(x)
    choice = random.choice(list('1234567890abcdefghigklmnopqrstuvyxwz', k=x))
    print(choice)
    t = Thread(target=run_command, args=[count, results])
    t.start()
    threads.append(t)
for t in threads:
    t.join()

Ошибку выдает:

 3
Traceback (most recent call last):
  File "/media/sf_soft/vsc/thread.py", line 17, in <module>
    choice = random.choice(list('1234567890abcdefghigklmnopqrstuvyxwz', k=x))
TypeError: list() takes no keyword arguments

Как написать?
py.user.next
gelius
Как написать?
  
>>> import random
>>> 
>>> choice = random.choice('1234567890abcdefghigklmnopqrstuvyxwz')
>>> choice
'8'
>>>
  
>>> import random
>>> 
>>> lst = [random.choice('1234567890abcdefghigklmnopqrstuvyxwz') for _ in range(3)]
>>> lst
['g', 'h', '8']
>>>
gelius
Да, но результат такой необходим:
 lst
['gh8']
xam1816
используйте choices

  
import random
ch = random.choices('1234567890abcdefghigklmnopqrstuvyxwz', k=3)
print(''.join(ch))
py.user.next
gelius
Да, но результат такой необходим:
  
lst
['gh8']
  
>>> import random
>>> 
>>> lst = [''.join(random.choice('1234567890abcdefghigklmnopqrstuvyxwz') for _ in range(3))]
>>> lst
['a67']
>>>
  
>>> import random
>>> 
>>> text = ''.join(random.choice('1234567890abcdefghigklmnopqrstuvyxwz') for _ in range(3))
>>> text
'vaz'
>>>
Если используешь атомарные функции randом() и choice() из модуля, то ты можешь сам управлять случайностью. Там не случайность заложена, а псевдослучайность. Если же ты используешь надстройки над этими функциями, то всё типа удобно так, но ты случайность передаёшь самому модулю, чтобы он случайность эту обеспечивал, а эту случайность в модуле может кто-то исследовать и, например, угадать твой случайный пароль, потому что он знает, как эта “случайность” в модуле работает. Когда же ты сам управляешь случайностью, то ты можешь в эту обычную случайность в модуле подмешивать ещё что-то своё, какую-то свою дополнительную случайность, про которую никто не знает. Так что человек будет сидеть, угадывать твой пароль, строя гипотезы на основе знания о случайности в этом модуле, но у него ничего не будет получаться и он не будет понимать, в чём дело.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB