在Python中连接字符串?

时间:2014-09-25 20:27:45

标签: python string concatenation string-concatenation

我在Python中连接字符串时遇到问题。我需要连接字符串clave和cadena_aleatoria(x),而cadena_inicio小于256.这是我的脚本:

import sys
import random

x = random.randint(0,9)
def cadena_aleatoria(x):
    cadena = []
    cadena.append(x)
    while len(cadena)<10:
            x = random.randint(0,9)
            cadena.append(x)
    b = "".join(str(i) for i in cadena)

    print(b, end = "")


def cadena_inicio():
    clave = "5275328525062135755"
    cadena = clave + str(cadena_aleatoria(x))
    while len(cadena)<256:
            cadena = clave + str(cadena_aleatoria(x))               
    print(cadena)
cadena_inicio()

2 个答案:

答案 0 :(得分:1)

每次循环时,您都需要添加cadena不重新分配。

您还需要检查while len(cadena + str(cadena_aleatoria(x))),因为您在检查后一段时间内将str(cadena_aleatoria(x)))添加到cadena后可能会过去。

while len(cadena + str(cadena_aleatoria(x))) < 256:
      cadena += clave + str(cadena_aleatoria(x))

如果您不想将return(b)添加到您的cadena字符串中,还需要None's

def cadena_aleatoria():
    cadena = []
    cadena.append(x)
    while len(cadena)<10:
            x = random.randint(0,9)
            cadena.append(x)
    b = "".join(str(i) for i in cadena)
    return b

def cadena_inicio():
    clave = "5275328525062135755"
    cadena = ""
    while len(cadena + cadena_aleatoria(x)) < 256:
            cadena += clave + cadena_aleatoria(x)
    print (cadena)

您的第一个功能可以使用list comprehension

完成
def cadena_aleatoria():
    return "".join([str(random.randint(0,9)) for x in range(10)])

def cadena_inicio():
    clave = "5275328525062135755"
    cadena = ""
    while len(cadena + cadena_aleatoria()) < 256:
            cadena += clave + cadena_aleatoria()
    print (cadena)

答案 1 :(得分:0)

你遇到了一些问题。

首先,您没有从函数cadena_aleatoria(x)返回任何内容,因此调用它会返回None,并且您不希望将None添加到字符串中。因此,如果您想返回b,则应return b

另一个问题是你没有在while循环中为cadena添加任何长度。你可能想这样做:

cadena += clave + str(cadena_aleatoria(x))

你也没有从cadena_inicio()返回任何内容,但也许这是故意的。