繁体   English   中英

Random.choice无法正常工作python

[英]Random.choice not working correctly python

我有以下代码示例:

n = ['321','243','780']
b = ['12','56','90']
a = ['178', '765', '111']

E = input('Enter Word...')
qw = 1
Code = ('')
E_ready = [E[no:no+qw] for no in range(0, len(E), qw)]
for code in E_Ready:
   letter = random.choice(code)
   Code += letter

如果输入单词“ nba”,那么它将输出为“ nba”,我希望它与每个字母的相应列表中的随机元素一起输出,例如“ 32112178”

正如Willem van Onsem在评论中正确提到的:

“ ...这确实是一个糟糕的设计,按名称调用是相当不安全的。您最好使用字典。”

因此,请尝试以下操作:

n = {'option1':'321','option2':'243','option3':'780'}
letter = random.choice(list(n.values()))

或者,更短一些,如Chris提到的:

d = {'n':[321, 243, 780]}
letter = random.choice(d['n'])

print(letter)结果print(letter) (在两个选项上):

321
321
780
243
etc.. 

编辑

如何添加额外的变量:

n = 'n'
d = {n:[321, 243, 780]}
letter = random.choice(d[n])
q = 'q'
d[q] = [600, 234, 180]
new_letter = random.choice(d[q])

现在print(new_letter)给出:

234
180
180
600
etc..

第二编辑 (顺便说一句,由于问题变成了一个完全不同的问题,然后才首先提出来,所以这是纯粹的好处。因此,它没有进行优化。尽管如此,它仍然可以工作。):

import random
d = {'n':[321, 243, 780], 'b':['12','56','90'], 'a':['178', '765', '111']}

E = input('Enter Word...')

inputword = list(E)

for key in d.keys():
    if key in inputword:
        for i in range(len(inputword)):
            if inputword[i] == key:
                try:
                    inputword[i] = str(random.choice(d[key]))
                except:
                    pass

result = ''.join(inputword)
print(result)

如果输入= nba则输出= 32190111

如果输入= nhhsygbbvvra则输出= 321hhsyg5690vvr178

等等..

好的,您有一些基本问题。 如果要将一个变量分配给另一个变量,则无需将其放在引号中。 因此应该是:

code = n

但是实际上我想知道为什么您根本需要可变代码。 你可以做

import random
code = [ '321', '243', '780' ]
letter = random.choice(code)
print letter

我同意这一意见,最好使用类似以下内容的内容:

d = {'n':[mylist]}
letter = random.choice(d['n'])

问题在于random.choice适用于字符串...它只是将它们视为字符列表。 在您的情况下,代码变量和n应该完全相同,但实际上不同。 你也可以

n = [list]
code = n ## only makes any sense, if there 
         ## is a procedure assigns it based on some condition 
letter = random.choice(code)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM