如何连接列表中的所有数字?

时间:2019-03-02 17:56:06

标签: python python-2.7

为澄清起见,我不仅只想要一个随机字母词。稍后,我还需要代码中的随机数。

我编写了以下代码,给出了一个随机的7个字母的单词。
这是代码:-

import random
key_num = []
for initial_num in range(7):
    key_num.append(random.randrange(1,26))
def value(n):
    return (chr(int(n) + 64))
print value(key_num[0]) + value(key_num[1]) + value(key_num[2]) + value(key_num[3]) + value(key_num[4]) + value(key_num[5]) + value(key_num[6])

我的问题是,有没有更好的方法使用随机数来连接单词?

5 个答案:

答案 0 :(得分:1)

import string
word = "".join(random.choice(string.ascii_lowercase) for _ in range(string_length)]

我将如何制作随机字符串

答案 1 :(得分:1)

有许多不同的方法可以解决此问题并改善您的代码。您绝对应该检出str.joinlist comprehensions

如果您想尽可能地坚持原始代码,该基本解决方案如何:

import random
key_num = []
for initial_num in range(7):
    key_num.append(random.randrange(1,26))
def value(n):
    return (chr(int(n) + 64))

# so far unchanged, here comes the new bit:
print ''.join(value(k) for k in key_num)

答案 2 :(得分:1)

您已标记问题Python2.7。如果可以改用Python3,则可以使用random.choices使事情变得简单:

from string import ascii_lowercase
from random import choices

print ("".join(choices(ascii_lowercase,k=7)))

如果您陷在Python2中,则可以这样实现一个(简单的)random.choices

from random import choice

def choices(s,k=1):
  return [choice(s) for _ in xrange(k)]

答案 3 :(得分:0)

您可以在单个for循环中实现串联。
尝试以下代码:

import random
key_num = []
for initial_num in range(7):
    key_num.append(random.randrange(1,26))
def value(n):
    return (chr(int(n) + 64))
final_string = ""
for i in range(7): # Range of Numbers you want
    final_string += value(key_num[i]) # Concatenate random character
print final_string

答案 4 :(得分:0)

这是一种方法:

from random import randrange
from string import ascii_lowercase

def random_str(length=7):
    return ''.join(ascii_lowercase[randrange(len(ascii_lowercase))] for _ in range(length))

ascii_lowercase只是'abcdefghijklmnopqrstuvwxyz';我从中选择一个随机条目,然后将单个字母与str.join连接起来。

...实际上random.choice更适合于此。参见this answer