繁体   English   中英

用Python连接字符串?

[英]Concatenate strings in Python?

我在使用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()

您需要添加到cadena而不是每次循环都重新分配。

您还需要检查while len(cadena + str(cadena_aleatoria(x)))因为一旦在检查之后的cadena内将str(cadena_aleatoria(x)))cadena ,就可能要cadena

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

如果您不想在cadena字符串中添加None's则还需要return(b)

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)

您遇到了一些问题。

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

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

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

您也不会从cadena_inicio()返回任何内容,但这也许是有意的。

暂无
暂无

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

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